3
可能重复:
Weird java behavior with casts to primitive types了解Java程序
为什么下面的打印1
?
int i = (char) - (int) + (long) - 1;
System.out.println(i);
为什么上面的代码行打印1? i
的价值怎么变成1?
可能重复:
Weird java behavior with casts to primitive types了解Java程序
为什么下面的打印1
?
int i = (char) - (int) + (long) - 1;
System.out.println(i);
为什么上面的代码行打印1? i
的价值怎么变成1?
如果我没有记错的话,
int i = (char) - (int) + (long) - 1;
实际上相当于
int i = (char)(-(int)(+((long)(- 1))));
因为-1和1个很好地融入在表达式中使用的所有数据类型,我们可以删除要获得的演员表
int i = -(+(- 1));
这样看,每个表达式都有自己的变量(呃,除了-1)。
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)