Java Long无法正常打印

5

可能这很愚蠢,但是我正在尝试做以下事情:

long mult  = 2147483647 + 2147483647 + 2;
System.out.println(mult);  // result = 0

现在,我的变量mult将是一个10位数,也就是long类型的范围内。所以我不明白为什么它会打印出0作为结果。有人能解释一下吗?
3个回答

12

由于这三个常量值是int类型,所以使用int进行算术运算。您将结果分配给long变量是无关紧要的。请尝试以下代码:

long mult  = 2147483647L + 2147483647L + 2L;

如果小心的话,您可能只需将一个字面量设置为长字面量就可以了 - 但我个人会将它应用于所有字面量,以明确表明您希望对所有内容进行长整型算术运算。


非常好,谢谢!我不知道我的常量被视为整数。 - f20k

3
怎么样:
long mult = 2147483647L + 2147483647 + 2;

1

这是因为当你直接给出任何数字,例如num1 + num2时,它们被视为整数,并且由于该值超出范围,在这种情况下,你将得到0或其他输出,具体取决于输入。

你可以通过更改为

long mult  = 2147483647;
mult += 2147483647;
mult += 2;
System.out.println(mult);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接