可能这很愚蠢,但是我正在尝试做以下事情:
long mult = 2147483647 + 2147483647 + 2;
System.out.println(mult); // result = 0
现在,我的变量
mult
将是一个10位数,也就是long类型的范围内。所以我不明白为什么它会打印出0作为结果。有人能解释一下吗?可能这很愚蠢,但是我正在尝试做以下事情:
long mult = 2147483647 + 2147483647 + 2;
System.out.println(mult); // result = 0
mult
将是一个10位数,也就是long类型的范围内。所以我不明白为什么它会打印出0作为结果。有人能解释一下吗?由于这三个常量值是int
类型,所以使用int
进行算术运算。您将结果分配给long
变量是无关紧要的。请尝试以下代码:
long mult = 2147483647L + 2147483647L + 2L;
如果小心的话,您可能只需将一个字面量设置为长字面量就可以了 - 但我个人会将它应用于所有字面量,以明确表明您希望对所有内容进行长整型算术运算。
long mult = 2147483647L + 2147483647 + 2;
这是因为当你直接给出任何数字,例如num1 + num2
时,它们被视为整数,并且由于该值超出范围,在这种情况下,你将得到0或其他输出,具体取决于输入。
你可以通过更改为
long mult = 2147483647;
mult += 2147483647;
mult += 2;
System.out.println(mult);