为什么带和不带“L”的乘法结果不同?
在Java中,使用“L”时乘法运算会产生不同的结果操作数之一的后缀。
添加“L”以获得正确的长值
添加“L”可确保结果是长值。整数相乘时,结果也是整数。如果结果超出整数范围(2147483647 到 -2147483648),则会溢出并变为负数。
通过在表达式中将“L”添加到 365,您可以明确指定它是一个 long 值。这确保了它与其他整数相乘的结果是一个 long 值,并且不会被截断到整数范围。
没有“L”:不正确的整数结果
当不带“L”的整数相乘时,结果是一个整数。如果结果超出整数范围,它会“环绕”并成为不同的值。
例如,乘法 1000606024365 不添加 " L" 给出了错误的结果 1471228928。这是因为结果 31536000000 溢出了整数范围,变成了 -1702967296(31536000000 的 2 的补码表示)。
二进制表示
两个结果的二进制表示显示差异:
如果不添加“L”,则四个最高有效位将被截断,导致错误的表示 0101011110110001 0010110000000000,其中对应于错误的结果。
其他注意事项
以上是为什么在 Java 乘法中向一个操作数添加'L”会改变结果?的详细内容。更多信息请关注PHP中文网其他相关文章!