Long型整数运算时溢出问题

xingyuner2 2016-12-30 12:56:12
我们都知道在long型整数做运算时最好把L放在第一个数的后面,好尽早标识它是一个long型变量。如图:long g=1000000000l*3*10,可以正常输出300亿。而long f=1000000000*3*10L;的输出很诡异。那么就有一个问题,long型变量在运算时溢出,它的值是不是就不确定了?如图:Integer的最大值是21亿多.变量long e=1000000000*2*10L;即200亿还可以正常显示(但也已经超出Integer的最大值)。变量f,long f=1000000000*3*10L(300亿)就很诡异了。那是不是不把L放在第一个数后面就不确定啥时候就会发生运算时溢出?
谢谢各位大神!小弟的问题比较多。
...全文
792 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
ps45221 2016-12-30
  • 打赏
  • 举报
回复

long e=1000000000*2*10L;  //L放后面,先计算1000000000*2默认为int来存储,此时结果为20亿,没有超过int范围,所以结果正常
long g=1000000000l*3*10 //L放前面,说明乘法计算开始就是long的,
 long f=1000000000*3*10L; //L放后面,前面表达式默认按照int来算的,结果为30亿,超过int,溢出了,所以最终结果为也是不正确的,因为前面的溢出了
另外,提一点,有符号整数,一般溢出,最高位就被很可能就变成1了,所以才会出现负数

50,547

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧