整数溢出问题 。如果整数太打,超出了整数类型的范围会怎么样呢?下面的程序分别从符号类型和无符号类型整数设置为最大允许值加略打一些的值,看结果是什么?
下面一段程序
#include<stdio.h>
int main(void)
{
int i=2147483647;
unsigned int j=4294967295;
printf("%d/n%d/n%d/n",i,i+1,i+2);
printf("%u/n%u/n%u/n",j,j+1,j+2);
return 0;
}
结果为:
2147483647
-2147483648
-2147483647
4294967295
0
1
-1
0
1
Press any key to continue
无符号整数j象一个汽车里程指示表,当达到最大值的时候,它将溢出到整数点,形成一个循环。整数i也是同样。他们的主要区别是unsigned int 变量j的起点是0,而int的起始点是-2147483648。