在下面的代码示例中,我很难理解后缀运算符是否在比较之前发生。我知道后缀的优先级更高,但是根据java docs:
后缀版本(result ++)的值为原始值。
所以在这段代码中:
int number = 2;
boolean bob = number < number-- * number;
System.out.println(bob +" "+number );
number输出时应为1
。那是意料之中的。问题是鲍勃是假的。如果尽管有后缀,该数字仍使用“原始值”-那么问题不应该评估为:
bob = 2 <2 * 2
最后我检查2是否小于4?末尾要相乘的另一个数字是否以某种方式变为1(这对我来说没有意义)?
我知道问题不在那里,因为它可以正常工作:
number = 2;
boolean test = 2 < number++;
System.out.println(test);
2 <2在这里正确,然后它增加数字。为什么与前面的示例不同?
答案 0 :(得分:3)
number--
的值为2,但是此后所有对number
的引用的值为1。因此number-- * number
的值为2 * 1,即2。