你好我对java有一些疑问,为什么以下代码返回奇怪的值?
System.out.println("Strange " + (20 * 232792560)/20);
Run Code Online (Sandbox Code Playgroud)
我为什么收到18044195?
因为(20 * 232792560)溢出了一个范围int,并且绕数次范围变成了几次360883904.然后将其除以20给出您看到的结果.
如果您想要正确的结果,那么您需要:
System.out.println("Strange " + (20 * 232792560L) / 20);
Run Code Online (Sandbox Code Playgroud)
(标记一个文字,L意味着常数将用long,而不是用int,所以这将不再溢出.)
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |