문제
다음 C 코드의 실행 결과를 쓰시오.
C#include <stdio.h> int main() { unsigned char m = 0x9C; unsigned char n = 0x73; unsigned char p = ~m; unsigned char q = m << 2; unsigned char r = n >> 3; printf("%02X", (p & q) | (r ^ m)); return 0; }
정답
F2
F2f2
해설
m = 0x9C, n = 0x73이다.
- p = ~m = ~0x9C = 0x63
- q = m << 2 = 0x9C << 2 = 0x70 (unsigned char에 저장되며 상위 비트는 버려짐)
- r = n >> 3 = 0x73 >> 3 = 0x0E
- p & q = 0x63 & 0x70 = 0x60
- r ^ m = 0x0E ^ 0x9C = 0x92
- (p & q) | (r ^ m) = 0x60 | 0x92 = 0xF2 따라서 출력 결과는 F2이다.