在C语言中,如果整数超出对应类型的最大范围,会怎样呢?
看一个例子
#include <stdio.h>
int main()
{
// int按32位算
// 有符号最高位为符号位,所以取值范围为-2^31~2^31-1,即 -2147483648~2147483647
// 无符号没有符号位,取值均为非负数,所以取值范围为0~2^32-1,即0~4294967295
int i = 2147483647; // 有符号int类型整数的最大值
unsigned int j = 4294967295; // 无符号int类型整数的最大值
printf("%d\t%d\t%d\n", i, i+1, i+2);
printf("%u\t%u\t%u", j, j+1, j+2);
return 0;
}
在我的windows操作系统中,如上程序运行结果如下
2147483647 -2147483648 -2147483647
4294967295 0 1
不难看出,当整数超过其最大值时,会重新从最小值开始计算,它就类似于我们的24小时计时制。
但是,请注意如下两点: