为什么要关注打印1
?
int i = (char) - (int) + (long) - 1;
System.out.println(i);
为什么上面的代码行打印1?为什么i
的值变为1?
答案 0 :(得分: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)
答案 1 :(得分:0)
如果我没弄错的话,
int i = (char) - (int) + (long) - 1;
实际上相当于
int i = (char)(-(int)(+((long)(- 1))));
因为-1和1非常适合表达式中使用的所有数据类型,所以我们可以放弃强制转换来获取
int i = -(+(- 1));