当一个负整数在java中被强制转换为long时会发生什么?

时间:2015-04-11 12:44:45

标签: java integer long-integer

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吗?

1 个答案:

答案 0 :(得分:2)

i = (int) +(long) -(int) -1 - 2;

一元运算符将首先被评估,然后是二元运算符,因为一元运算符优先于二元运算符。

首先评估-(int) -1,然后它将成为+1

然后+(long)+1将为+1

之后,(int)+1将被评估,因此它将成为+1

然后+1-2将被评估为-1,因此您将获得-1。其他陈述将执行相同的操作。