◈ 기본 연습
1. 다음 프로그램의 출력 결과를 예측하시오.
#include <stdio.h> int main() { unsigned u = 5; int i = -5; printf("%d \n",u<<3); printf("%d \n",i<<3); return 0; }
답:
40
-40
<< 연산을 한 번 하면 2를 곱한 효과를 갖습니다.
따라서 3자리 왼쪽으로 이동하였으므로 2의 3승인 8을 곱한 효과를 갖습니다.
2. 다음 프로그램의 출력 결과를 예측하고 이유를 설명하시오.
참고:
unsigned int 형식의 0x80000000은 2147483648
int 형식의 0x80000000은 -2147483648
#include <stdio.h> int main() { unsigned u1 = 100; unsigned u2 = 0x80000000; int i1 = 100; int i2 = 0x80000000; printf("%d \n",u1>>3); printf("%d \n",i1>>3); printf("%d %#X\n",u2>>3, u2>>3); printf("%d %#X\n",i2>>3, i2>>3 ); return 0; }
답:
12
12
268435456 0x10000000
-268435456 0xF0000000
>> 연산을 한 번 하면 2로 나눈 효과를 갖습니다.
따라서 3자리 오른쪽으로 이동하였으므로 2의 3승인 8로 나눈 효과를 갖습니다.