【发布时间】:2014-02-10 12:06:19
【问题描述】:
简单的代码没问题
long x = Integer.MAX_VALUE;
System.out.println(x * 2 + "...." + Long.MAX_VALUE);
= 4294967294....9223372036854775807
但是这里发生了什么?为什么-2
System.out.println(2 * Integer.MAX_VALUE + "...." + Long.MAX_VALUE);
= -2....9223372036854775807
为什么元素是 149998,编译器不会将这些转换为 long 吗?
long elements = 2 * Integer.MAX_VALUE + 150000;
System.out.println(elements + "...." + Long.MAX_VALUE);
149998....9223372036854775807
-谢谢
【问题讨论】:
-
它知道在哪里转换?在第三个表达式中,您根本不使用
long....而在第二个表达式中,您不要使用一个,直到为时已晚。 -
您认为为什么会发生这种情况?为什么不应该这样做?
标签: java int long-integer