在 Java 中将负整数类型转换为 long 时会发生什么


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。 将对其他语句执行相同的操作。

相关内容

最新更新