- 例子1
#include<stdio.h>
int main(void)
{
int i = 2147483647;
i ++;
printf("%d\n", i);
return 0;
}
整形int的取值范围为:-2147483648 ~~ 2147483647。当 整形变量i 值为2147483647,再执行i++。数据溢出,i++后 i 的值为-2147483648。读者可以自行验证。
- 例子2
#include<stdio.h>
int main(void)
{
int i = -2147483648;
i = i - 3;
printf("%d\n", i);
return 0;
}
当 整形变量i 值为-2147483648 ,再执行i = i - 3 。数据溢出,i = i- 3后 i 的值为2147483645。读者可以自行验证。
- 总结:不同数据类型的变量溢出后,都会在其变量取值内循环,而不是报错。