작성
·
367
1
#include <stdio.h>
#include <limits.h>
#include <stdlib.h>
int main()
{
signed int u_max = INT_MAX ;
//i to binary representation
char buffer[33];
_itoa(u_max, buffer, 2);
//print decimal and binary
printf("decimal: %u\n", u_max);
printf("binary: %s\n", buffer);
return 0;
}
//INT_MAX
//decimal: 2147483647
//binary : 1111111111111111111111111111111
//INT_MAX +1
//decimal: 2147483648
//binary : 10000000000000000000000000000000
signed int max 값에 +1을 하면 output 창에 오버플로우라고 경고가 뜨긴 하지만 실행했을 때 정말 +1한 값이 나옵니다. 왜 unsigned int와 다른 방식의 결과가 나오는지 궁금합니다.
감사합니다:)
답변 1
2
printf의 출력을 unsigned integer format인 %u 로 하셔서 그렇습니다.
integer format 인 %d 으로 바꿔보세요. 기대하시던 결과를 얻으실 수 있을겁니다.