문제
다음 C 코드의 출력 결과로 가장 적절한 것은?
C#include <stdio.h> struct Node { struct Node* next; unsigned int x; }; int main() { struct Node t1 = { 0, 5u }; struct Node t2 = { 0, 7u }; struct Node t3 = { 0, 11u }; t3.next = &t2; t2.next = &t1; struct Node* curr = &t3; int sum = 0; while (curr) { sum = sum * 3 + curr->x; curr = curr->next; } sum = (sum ^ 42u) + 100u; printf("%u\n", sum); }
① 187 ② 145 ③ 287 ④ 42
정답
1번
해설
정답: 1. 연결 순서는 t3(11) → t2(7) → t1(5)이다. sum은 0→11→40→125가 되고, 125 ^ 42는 87이므로 100을 더해 187이 출력된다.
오답 풀이
- 1번: 연결 리스트 순회와 XOR 계산이 맞다.
- 2번: XOR 연산을 잘못 계산한 값이다.
- 3번: 100을 더하는 위치 또는 값이 잘못된 결과이다.
- 4번: XOR에 사용된 상수만 본 값이다.
보충 개념 ^는 C에서 비트 XOR 연산자이다. 연결 리스트는 next 포인터가 가리키는 순서대로 순회한다.