int和longs之间的java乘法给出0

use*_*840 4 java int type-conversion multiplication long-integer

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;
Run Code Online (Sandbox Code Playgroud)

为什么3的产品出现0?

Jon*_*eet 8

为什么3的产品出现0?

你的乘法是在int算术中完成的,并且它是溢出的,结果为0.你基本上做了2 24*2 24,即2 48 - 并且结果的底部32位都是0.你指定的事实的结果的操作的一个long不改变用于对类型进行操作.

要使用64位整数运算执行算术,只需将操作数更改为long:

private static final long RESULT  = (long) FIRST * SECOND * THIRD;
Run Code Online (Sandbox Code Playgroud)