我有 5 个对象,a, b, c。d和e。5 个对象的哈希码如下:
a => 72444
b => 110327396
c => 107151
d => 2017793190
e => 68574749
Run Code Online (Sandbox Code Playgroud)
如您所见,所有都是正值。但是,当我将它们总结为一个long-variable 时,结果为负:
long sum = a+b+c+d+e;
System.out.println(sum); // prints -2098092366
Run Code Online (Sandbox Code Playgroud)
这些整数的总和远低于long(9223372036854775807)的最大值,但它产生了负结果。为什么?
发生这种情况是因为您的变量都是ints,所以您要int加法(溢出),然后将最终结果转换为long.
您可以通过将第一个变量强制转换为long:
long sum = (long)a + b + c + d + e;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1715 次 |
| 最近记录: |