У меня есть функция, которая ожидает, что в качестве одного из параметров будет длинное значение.Арифметическое выражение, которое не разрешается при вызове функции
void doSomething(long limit, ...) {
//statements
}
в вызове функции я передать аргумент как,
doSomething(5 * 1024 * 1024 * 1024, ...);
Функция никогда не принимает окончательное значение 5368709120
выражения, то вместо того, чтобы получает 1073741824
. Я не могу понять, почему это происходит.
положить его '5л * 1024 * 1024 * 1024' (примечание * L * после 5), чтобы быть 'long' –
Кроме того, вам следует избегать магических чисел; вместо этого используйте константу 'long', например. 'private static final long SIZE = 5L * 1024 * 1024 * 1024;'. –