这是代码:
int a;
a = 2147483648 + 2147483648;
printf("%d", a);
Run Code Online (Sandbox Code Playgroud)
我知道 int 变量的最大数量是 2147483647。所以,据我所知,2147483648 = -2147483648。但为什么 2147483648 + 2147483648 = 0?
2147483648 是 1 后跟 31 个零。如果添加两次,它只会溢出(所有 32 位都将为零并设置进位)。由于进位基本被丢弃(忽略,当你将值存入a时),你看不到它,你看到的都是0。
10000000 00000000 00000000 00000000 +10000000 00000000 00000000 00000000 --------------------- (1)00000000 00000000 00000000 00000000
| 归档时间: |
|
| 查看次数: |
173 次 |
| 最近记录: |