【发布时间】:2020-05-06 00:24:53
【问题描述】:
代码如下:
int a;
a = 2147483648 + 2147483648;
printf("%d", a);
我知道 int 变量的最大数量是 2147483647。 所以,据我所知,2147483648 = -2147483648。 但是为什么 2147483648 + 2147483648 = 0?
【问题讨论】:
-
嗯,你看,2147483648 是 0x80000000 + 0x80000000 = 0x100000000。这不适合 32 位,所以最后的 1 丢失了,变成了 0。
-
看看它是如何用二进制表示的,以及计算机是如何将数字相加的。
-
如果你知道
a = -a然后在两边加上a...a+a = -a+a即0 -
@BradyDean C 算术是根据值定义的,而不是表示形式
标签: c