键入Casting,Operator Precedence还是其他什么?

时间:2017-05-29 11:47:17

标签: java

我被要求解释为什么下面的代码片段打印1.我已经盯着它看了一段时间,但还不能说出它为什么打印出1或甚至为什么它会编译。有人可以告诉我为什么吗?

    int i = (byte) + (char) - (int) + (long) - 1;
    System.out.println(i);

2 个答案:

答案 0 :(得分:2)

这只是一系列强制转换和数字/字符转换:

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);

答案 1 :(得分:1)

这里有4个施法操作符和4个+/-操作符。

由于+/-无法应用于投射操作符,因此评估此表达式的唯一方法是将DocumentRoot "C:/xampp/htdocs/projectName" <Directory "C:/xampp/htdocs/projectName"> -视为一元运算符:

+