关于Postfix增量运算符的说明:java

int i = 0;
boolean b = true;
System.out.println(b && !(i++ > 0))

当我编译上面的代码时,我得到一个值true.

但是怎么可能呢,因为论证的第二部分(因为b已经是真的)基本上转化为

(0 1> 0)=> (1> 0)

哪个应该返回true.然后声明将是真实的&&是的,这是假的.

我错过了什么?

最佳答案
Java表现正确:)

i++

那是后缀增量.

它生成结果,然后稍后递增该值.

!(i++ > 0) // now  value is still zero

我将使用i的先前值,然后它将增加它.

当你使用时,它就像

temp=i;
i += 1; 
i=temp;     // here old value of i.

language specification on Postfix Increment Operator ++

the value 1 is added to the value of the variable and the sum is stored back into the variable. ……

The value of the postfix increment expression is the value of the variable before the new value is stored.

可能的解决方案是我,这是根据您的要求,

07001

The value of the prefix increment expression is the value of the variable after the new value is stored.

转载注明原文:关于Postfix增量运算符的说明:java - 代码日志