类型铸造,操作员优先级或其他类型



我被要求解释为什么以下摘要打印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

相关内容

最新更新