인프런 커뮤니티 질문&답변

주연님의 프로필 이미지
주연

작성한 질문수

홍정모의 따라하며 배우는 C언어

3.6 정수의 오버플로우

signed int일 때 INT_MAX+1을 하면 왜 제대로 작동이 되는 건가요?

작성

·

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 으로 바꿔보세요. 기대하시던 결과를 얻으실 수 있을겁니다.

주연님의 프로필 이미지
주연

작성한 질문수

질문하기