문제
다음 C 코드의 실행 결과를 쓰시오.
C#include <stdio.h> int main() { int m = 25; int n = 18; printf("%d %d", (m << 1) & n, (m >> 2) | (n ^ 7)); return 0; }
정답
18 23
18 23
해설
m = 25(11001), n = 18(10010)이다. m << 1 = 50(110010)이고, n을 같은 자릿수로 보면 010010이므로 (m << 1) & n = 110010 & 010010 = 010010 = 18이다. 또한 m >> 2 = 6, n ^ 7 = 18 ^ 7 = 21이므로 (m >> 2) | (n ^ 7) = 6 | 21 = 23이다. 따라서 출력은 "18 23"이다.