Oz_Vessalius 2017-09-03 08:14 采纳率: 50%
浏览 2210
已采纳

新手问一个关于整数溢出的问题

public class Test {
public static void main(String[] args) {
int integer = 2147483647 + 2;
System.out.println(integer);
}
}

请问为什么整数溢出后输出结果是-2147483647?

  • 写回答

11条回答

  • threenewbee 2017-09-03 08:26
    关注

    你还可以用时钟的方式来理解,假设一个时钟上有如下刻度
    -2147483648 --2147483647 -2147483646 -2147483645 ... -3 -2 -1 0 1 2 3 4 ... 2147483645 2147483646 2147483647 (后面接上 -2147483648,转一圈回来)
    把这些数字构成一个圆环
    加法就是往顺时针拨,减法就是往逆时针拨。
    你从2147483647 加2,就是往后拨2格,因为是一个圆环,所以是--2147483647

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(10条)

报告相同问题?

悬赏问题

  • ¥15 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!