【发布时间】:2015-11-17 15:51:17
【问题描述】:
我有一个函数需要一个长值作为参数之一。
void doSomething(long limit, ...) {
//statements
}
在函数调用中,我将参数传递为,
doSomething(5 * 1024 * 1024 * 1024, ...);
函数从不接收表达式的最终值5368709120,而是接收1073741824。我无法理解为什么会这样。
【问题讨论】:
-
把
5L * 1024 * 1024 * 1024(注意5后的L)改成long -
另外,你应该避免幻数;而是使用
long常量,例如private static final long SIZE = 5L * 1024 * 1024 * 1024;.
标签: java long-integer arithmetic-expressions function-call