繁体   English   中英

长整数中的Java整数溢出乘积

[英]Java Integer overflow product in a long integer

我有这个愚蠢的问题。

long val = Integer.MIN_VALUE * -1;
System.out.println(val);

为什么会打印-2147483648

一个long应该可以容纳上面的产品吧? 输出不应该是2147483648

乘积计算为int ,然后转换为long 但是如果一个操作数很长,结果就是预期的结果。

-1更改为-1L以计算为long

public static void main(String[] args) {
    long val = Integer.MIN_VALUE * -1;
    long longVal = Integer.MIN_VALUE * -1L;
    System.out.println(Integer.MIN_VALUE);
    System.out.println(val);
    System.out.println(longVal);
}

输出是

-2147483648
-2147483648
2147483648

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM