private static final int FIRST = 8;
private static final int SECOND = (4 * 1024 * 1024)/8;
private static final int THIRD = (4 * 1024 * 1024);
private static final long RESULT = FIRST *SECOND * THIRD;
为什么3的乘积是0?
最佳答案
Why is the product of the 3 coming out to be 0?
你的乘法是在 int
算术中完成的,它溢出了,结果为 0。你基本上是在做 224 * 224,即 248 - 结果的底部 32 位全部为 0。您将操作的 result 分配给 long
不会更改用于执行操作的类型。
要使用 64 位整数运算执行运算,只需将操作数更改为 long
:
private static final long RESULT = (long) FIRST * SECOND * THIRD;
关于int 和 longs 之间的 java 乘法给出 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18374406/