我被要求解释为什么以下摘要打印1.我盯着它呆了一段时间,但尚未说出为什么它打印出1,甚至为什么它会编译。有人可以告诉我为什么吗?
int i = (byte) + (char) - (int) + (long) - 1;
System.out.println(i);
这只是一系列铸件和数字/char转换:
int i = (byte) +(char) -(int) +(long) -1;
可以用冗长的方式作为:
int a = -1;
long b = (long) a;
int c = (int) -b; //makes it positive
char d = (char) c;
byte e = (byte) d;
int f = e;
System.out.println(f);
您这里有4个铸造操作员和4 /-运算符。
由于/-不能应用于铸造操作员,评估此表达式的唯一方法是将-
和+
视为一元操作员:
int i = (byte) (+ ((char) (- ((int) (+ ((long) (- 1)))))));
-1 int
-1 long
-1 long
-1 int
--1 == +1 int
1 char
1 char
1 byte
1 int