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?
答案 0 :(得分:8)
为什么3的产品是0?
你的乘法是在int
算术中进行的,并且它是溢出的,结果为0.你基本上做2 24 * 2 24 ,即2 48 - 并且结果的底部32位全部为0.将操作的结果分配给long
的事实没有t更改用于执行操作的类型。
要使用64位整数运算执行算术,只需将操作数更改为long
:
private static final long RESULT = (long) FIRST * SECOND * THIRD;