黑马程序员技术交流社区
标题:
来看个简单的 小问题
[打印本页]
作者:
Akm
时间:
2013-9-7 17:01
标题:
来看个简单的 小问题
本帖最后由 杨增坤 于 2013-9-8 07:25 编辑
不要在电脑上运行,看下面代码的输出结果是多少: public class Demo{
public static void main(String[] args) {
System.out.println(2147483647 + 1);
}
}
又一次失误了. .
作者:
李锡碧
时间:
2013-9-7 17:13
本帖最后由 李锡碧 于 2013-9-7 17:16 编辑
数据溢出 int 32位 -2147483648 ~ 2147483647
解决方法 System.out.println((long)2147483647 + 1);
作者:
小冰块
时间:
2013-9-7 17:31
2147483647是int的最大数值,所有位数上全部为1,我以为加1后如果不报错就会变成全0,然后我就以为可能会输出0——我真傻,真的,全0不代表就是0啊{:soso_e127:},实验表明,结果是-2147483648。
所以0的实际情况是在int型的32位上,符号位是1,后面全是0?求真相,我的操作系统是体育老师教的……{:soso_e127:}
作者:
小冰块
时间:
2013-9-7 17:33
同样的,如果输出-2147483648-1,就会输出2147483647……
作者:
小冰块
时间:
2013-9-7 17:38
小冰块 发表于 2013-9-7 17:31
2147483647是int的最大数值,所有位数上全部为1,我以为加1后如果不报错就会变成全0,然后我就以为可能会输 ...
刚反应过来,符号位是0代表正数,符号位1才代表负数。我的操作系统果然是体育老师教的TAT……
作者:
赵凯
时间:
2013-9-7 17:56
数据溢出啊,2147483647是int的最大值,如果你在前边加上long就可以了,或者加上double也可以
作者:
joechen
时间:
2013-9-7 18:51
没怎么明白..
作者:
lonely_zb
时间:
2013-9-8 03:08
数据溢出,2147483647是int的最大值,将其转换为精度,范围更广的类型就可以,比如double,long...都行
作者:
王广亚
时间:
2013-9-8 08:00
类似的题:
public class ddd {
public static void main(String[] args) {
System.out.println((byte)(127 + 1));
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2