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吗?
答案 0 :(得分:2)
i = (int) +(long) -(int) -1 - 2;
一元运算符将首先被评估,然后是二元运算符,因为一元运算符优先于二元运算符。
首先评估-(int) -1
,然后它将成为+1
然后+(long)+1
将为+1
之后,(int)+1
将被评估,因此它将成为+1
然后+1-2
将被评估为-1
,因此您将获得-1
。其他陈述将执行相同的操作。