这一定非常愚蠢但是,我正在努力做到以下几点:
long mult = 2147483647 + 2147483647 + 2;
System.out.println(mult); // result = 0
现在,我的变量mult
将是一个10位数字,在很长的范围内。所以我不明白为什么它会因此打印出0。任何人都可以解释原因吗?
答案 0 :(得分:12)
使用int
代替long
进行算术运算,因为三个常数值为int
s。您分配给long
变量这一事实无关紧要。试试这个:
long mult = 2147483647L + 2147483647L + 2L;
如果你小心的话,你可能只需要将其中一个文字作为一个长文字 - 但我个人会将其应用于所有这些文字,只是为了明确你想要long
算术为了一切。
答案 1 :(得分:3)
怎么样:
long mult = 2147483647L + 2147483647 + 2;
答案 2 :(得分:1)
那是因为当你直接给出num1 + num2
之类的任何数字时,它们被视为整数,因为在这种情况下值超出界限,你将获得0或其他输出,具体取决于输入。
您可以通过更改为
轻松解决此问题long mult = 2147483647;
mult += 2147483647;
mult += 2;
System.out.println(mult);