int i = 0;
long ll = 0L;
i = -1 - 2; // -3
i = (int) -1 - 2; // -3
ll = (long) - (int) -1 - 2;// -1
i = (int) +(long) -(int) -1 - 2;//-1
ll = (long) +(int) -1 - 2; // -3
在上面的程序中,在行
ll = (long) - (int) -1-2;
ll
值为 -1
。仅通过类型转换,它的值如何变得-1
?不应该像 3 或 -3 吗?
i = (int) +(long) -(int) -1 - 2;
一元运算符将首先计算,然后计算二进制,因为一元运算符的优先级高于二进制运算符。
所以-(int) -1
将首先进行评估,它将变得+1
那么+(long)+1
就会+1
之后,(int)+1
将被评估,因此它将变得+1
然后+1-2
将被评估为-1
因此您得到-1
。 将对其他语句执行相同的操作。