1에서 30만까지 더하면 얼마가 나오는가를 돌려보면 2,050,477,040가 나온다
1에서 100만까지 더하면? 1,784,293,664
오히려 더 작아졌다??
#include <stdio.h>
int main()
{
int i;
int hap=0;
for(i=1; i<=1000000;i++)
{
hap=hap+i;
printf("%d\n", i);
}
printf("%d", hap);
}
for문 안에 조건식만 바꿨을뿐인데, 왜 에러가 나는거야?
코드에 문제가 있나?
표현된걸 보니까 int형 데이터를 4byte만큼 할당함 따라서 -1*2의31승~ 2의31승 빼기1 만큼의 표현이 가능한데 2의31승이 2147483648 임. 2147483649부터는 표현못하고 -2147483648부터 다시 1씩 증가되서 그런것임
2147483648의 다음표현이 -2147483648라고 생각하면댐. 원형구조라고 해야하나..
에버플로우 애무플로우