为什么以下代码会输出 1
?
可能是重复问题:
将基本类型强制转换时的奇怪Java行为
int i = (char) - (int) + (long) - 1;
System.out.println(i);
为什么上面的代码行会输出1?变量i怎么会变成1?
为什么以下代码会输出 1
?
可能是重复问题:
将基本类型强制转换时的奇怪Java行为
int i = (char) - (int) + (long) - 1;
System.out.println(i);
long a = (long) -1; // a = -1
int b = (int) a; // b = -1
int c = -b; // c = 1
int d = (char) c; // d = 1
int i = (int) d; // i = 1 (implicit conversion)
如果我没有错的话,
int i = (char) - (int) + (long) - 1;
实际上等同于
int i = (char)(-(int)(+((long)(- 1))));
由于-1和1可以很好地适应表达式中使用的所有数据类型,因此我们可以省略强制转换以获得
int i = -(+(- 1));