如果整数超出了对应类型的取值范围会怎么样?int类型[-2147483648,2147483647]
#includeint main(void) { int i = 2147483647;//int 类型[-2147483648,2147483647] unsigned int j = 4294967295;//无符号int类型 [0,4294967295] printf("%d %d %dn", i, i+1, i+2); printf("%u %u %un", j, j+1, j+2); return 0; }
输出结果:
整数溢出时,会重新从起点开始。区别在于int与unsigned int表示的范围不同,故起点不同。
溢出行为是未定义的行为,C标准并未定义有符号类型的溢出规则。
注意,当 i 溢出其相应类型所能表示的最大值时,系统不会告知用户,在编程的时候必须自己留意。


![[记录学习][C基础009]整数溢出 [记录学习][C基础009]整数溢出](http://www.mshxw.com/aiimages/31/346879.png)
