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

标签 java int type-conversion long-integer multiplication

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/

相关文章:

string - 在 OCaml 中将字符转换为字符串

java - 构建快速 Android 应用程序 - Java 还是 native ?

java - ClassCastException : Cannot be cast to com. sun.xml.internal.bind.v2.runtime.reflect.Accessor

java - 为什么我得到 `incompatible types error` ?

Java:打印 int[] 时出现奇怪的异常

java - 与 Kotlin 泛型的混淆

java regex Matcher提取匹配之间的文本

Java 11 - 如何覆盖 JVM 和系统内存中的敏感信息(也许使用 System.gc()?)

java - 将矩阵中的 int 更改为 string

c# - 提供的 AutoMapper 值类型错误