这必须是非常愚蠢的,但是,我想做到以下几点:的Java龙将不打印正确
long mult = 2147483647 + 2147483647 + 2;
System.out.println(mult); // result = 0
现在,我varaible mult
将是一个10位数字,以及在长期范围内。所以我不明白为什么它打印出0。谁能解释为什么?
这必须是非常愚蠢的,但是,我想做到以下几点:的Java龙将不打印正确
long mult = 2147483647 + 2147483647 + 2;
System.out.println(mult); // result = 0
现在,我varaible mult
将是一个10位数字,以及在长期范围内。所以我不明白为什么它打印出0。谁能解释为什么?
由于三个常量值为int
s,因此算术是用int
而不是long
完成的。您分配给long
变量的事实是无关紧要的。试试这个:
long mult = 2147483647L + 2147483647L + 2L;
你也许可以用做只是文字,如果你很小心很长的文字之一逃脱 - 但我个人将它应用到所有的人,只是要清楚,你想要一切的算术运算long
。
如何:
long mult = 2147483647L + 2147483647 + 2;
那是因为当你给任何数量的直接像num1 + num2
他们被视为整数,因为该值是出在这种情况下边界的你将得到0或取决于其他输出输入。
您可以轻松地通过改变解决这
long mult = 2147483647;
mult += 2147483647;
mult += 2;
System.out.println(mult);
伟大的作品,谢谢!我不知道我的常量被视为整数 – f20k 2011-03-04 14:29:25