-4 c
我在c中写了代码:
#include <stdlib.h>
#include <stdio.h>
int main()
{
int num= 2147483646;
printf("%d,%d" , num+1, num+2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
而输出是 -2147483647,-2147483648
当我向变量num添加2时,为什么数字变为负数?
你确定输出不是2147483647, -2147483648吗?我从来没有遇到过2147483646有效的平台int而2147483647不是(尽管理论上可行).
溢出int类型的行为在C中是未定义的.
这里似乎发生的是INT_MIN一旦达到INT_MAX就会转向(这个特定的未定义构造的相当常见的表现形式,但不依赖于此).
| 归档时间: |
|
| 查看次数: |
139 次 |
| 最近记录: |