25-1아래 C 프로그램이 출력하는 정수를 적으시오.#include &… | 2025년 정보처리기사실기 1회차 기출문제 상세 페이지
17
25-1
아래 C 프로그램이 출력하는 정수를 적으시오.
#include <stdio.h>
typedef struct {
const char *tag;
int bits[3];
} Rec;
int mask(int v) {
return v & 0x3C;
}
int total(const Rec *r) {
int s = 0;
for (int j = 0; j < 3; j++)
s += mask(r->bits[j]);
return s;
}
int main(void) {
Rec list[2] = {
{"P1", {0x5F, 0x21, 0xC6}},
{"P2", {0x3A, 0x94, 0x7D}}
};
const Rec *p = list;
int out = 0;
for (int i = 0; i < 2; i++)
out += total(p + i);
printf("%d", out);
return 0;
}해설
200
[해설]
mask는 각 값과 0x3C(0011 1100)를 비트 AND 하여 가운데 4비트만 남긴다.
- P1: 0x5F→0x1C(28), 0x21→0x20(32), 0xC6→0x04(4), 합 64
- P2: 0x3A→0x38(56), 0x94→0x14(20), 0x7D→0x3C(60), 합 136
포인터 p + i로 두 구조체를 차례로 넘겨 합하면 64 + 136 = 200이다. 문자열 tag는 계산에 쓰이지 않는다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.