C 언어 기초
uint8_t x = 250;
for (int i = 0; i < 10; i++)
x++;
printf("%d\n", x);uint8_t는 8비트의 부호 없는 정수형이다. x를 10번 증가시키는 위의 코드를 실행했을 때의 출력으로 올바른 것은?
- A4
- B255
- C260
정답과 해설 보기
정답: A. 4
uint8_t로 나타낼 수 있는 것은 0~255입니다. 부호 없는 정수형에 들어가지 않는 값은 2⁸ = 256으로 나눈 나머지 값이 된다고 규격에 정해져 있으므로, 250에서 1씩 증가시키면 255 다음에는 0으로 돌아갑니다. 10번 증가시키면 250 + 10 = 260을 256으로 나눈 나머지인 4가 됩니다. 이에 비해 부호 있는 정수형의 계산에서 일어나는 오버플로는 미정의 동작입니다.