#include <stdio.h>
int main() {
long long int n1 = +2147483647LL; //끝에 LL을 추가하여 이 상수가 long long형 임을 명시
long long int n2 = -2147483648LL; //끝에 LL을 추가하여 이 상수가 long long형 임을 명시
printf("%d \n", sizeof(long long int));
printf("전 : %lld \n", n1);
n1 = n1 + 100;
printf("후 : %lld \n", n1);
printf("전 : %lld \n", n2);
n2 = n2 - 100;
printf("후 : %lld \n", n2);
return 0;
}
-----------------------------------------------------------------------------------------------
책으로 C언어를 공부하고 있는 중에 문제가 발생했어요.
[소 스]
---------------------------------------------------
long long int n1 = +2147483647;
long long int n2 = -2147483648;
printf("%d \n", sizeof(long long int));
printf("전 : %lld \n", n1);
n1 = n1 + 100;
printf("후 : %lld \n", n1);
printf("전 : %lld \n", n2);
n2 = n2 - 100;
printf("후 : %lld \n", n2);
---------------------------------------------------
책 내용대로라면 위의 소스를 실행시켰을 경우 실행결과가
[결 과]
----------------
8
전 : 2147483647;
후 : 2147483747;
전 : -2147483648;
후 : -2147483748;
----------------
라고 나와야 하는데
8
전 : 2147483647
후 : 2147483747
전 : 2147483648
후 : 2147483548
[Visual Studio 2008 결과]
8
전 : 2147483647
후 : -2147483549
전 : -2147483648
후 : 2147483548
[Dev-C++ 결과] 라는 잘못된 값이 출력되었습니다.
왜 이런 결과가 나왔는지 궁금합니다.
'c·c++ > c 프로그래밍' 카테고리의 다른 글
폰트로 사각형 그리기 (0) | 2012.01.14 |
---|---|
Visual Studio 사용법 (0) | 2011.12.31 |
short형과 unsigned short형 (0) | 2011.12.26 |
초보자들이 보기좋은 쉬운 책 (0) | 2011.12.25 |
문자열의 배열과 포인터 (0) | 2011.12.16 |