为什么移除后i2的值变成-2147483648
时间: 2024-01-07 13:04:28 浏览: 115
DART2 Prima Plus-教程2-列表
Java中的int类型是32位有符号整数,其取值范围为-2147483648 ~ 2147483647。
当执行int i = 2147483647;时,变量i的值已经达到了int类型的最大值。
当执行int i2 = i + 1;时,由于i的值已经达到了int类型的最大值,再加上1就会发生整数溢出。整数溢出是指计算结果的位数超过了所能存储的位数,超出的高位部分被截断,只保留低位的部分。在此例中,i+1的结果二进制表示为10000000 00000000 00000000 00000000,超出了int类型的32位,高位部分被截断,只保留低位的部分,也就是00000000 00000000 00000000 00000000,其对应的十进制值为0。
所以,int i2 = i + 1; 的结果实际上是i2 = 0;。而0的二进制表示就是32位全为0,这个数恰好是int类型的最小值,对应的十进制值为-2147483648。
因此,移除后i2的值变成了-2147483648。
阅读全文