A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Akm 黑马帝   /  2013-9-7 17:01  /  1071 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨增坤 于 2013-9-8 07:25 编辑

不要在电脑上运行,看下面代码的输出结果是多少: public class Demo{
public static void main(String[] args) {
        System.out.println(2147483647 + 1);
   }
}
又一次失误了. .



评分

参与人数 1技术分 +1 收起 理由
以防万一 + 1 神马都是浮云

查看全部评分

8 个回复

倒序浏览
本帖最后由 李锡碧 于 2013-9-7 17:16 编辑

数据溢出  int 32位 -2147483648 ~ 2147483647
解决方法 System.out.println((long)2147483647 + 1);
回复 使用道具 举报 1 0
2147483647是int的最大数值,所有位数上全部为1,我以为加1后如果不报错就会变成全0,然后我就以为可能会输出0——我真傻,真的,全0不代表就是0啊{:soso_e127:},实验表明,结果是-2147483648。

所以0的实际情况是在int型的32位上,符号位是1,后面全是0?求真相,我的操作系统是体育老师教的……{:soso_e127:}
回复 使用道具 举报
同样的,如果输出-2147483648-1,就会输出2147483647……
回复 使用道具 举报
小冰块 发表于 2013-9-7 17:31
2147483647是int的最大数值,所有位数上全部为1,我以为加1后如果不报错就会变成全0,然后我就以为可能会输 ...

刚反应过来,符号位是0代表正数,符号位1才代表负数。我的操作系统果然是体育老师教的TAT……

评分

参与人数 1技术分 +1 收起 理由
以防万一 + 1 很给力!

查看全部评分

回复 使用道具 举报
数据溢出啊,2147483647是int的最大值,如果你在前边加上long就可以了,或者加上double也可以
回复 使用道具 举报
没怎么明白..
回复 使用道具 举报
数据溢出,2147483647是int的最大值,将其转换为精度,范围更广的类型就可以,比如double,long...都行
回复 使用道具 举报
类似的题:
  1. public class ddd {
  2.        
  3.                  public static void main(String[] args) {
  4.                          System.out.println((byte)(127 + 1));
  5.                     }
  6.                  
  7. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马