在下面的代码示例中,我正在努力解决后缀运算符在比较之前以某种方式发生的想法。我知道postfix具有更高的优先级,但根据java文档:
后缀版本(result ++)计算为原始值。
所以在这段代码中:
int number = 2;
boolean bob = number < number-- * number;
System.out.println(bob +" "+number );
数字应该是和输出时的1
。这是预期的。问题是bob是假的。如果数字仍然使用“原始值”尽管后缀 - 那么问题不应该评估为:bob = 2 <2 * 2,最后我检查2小于4?最后成倍增加的另一个数字是否以某种方式变为1(这对我来说没有意义)?
我知道问题不在于那里的比较运算符,因为这可以正常工作:
number = 2;
boolean test = 2 < number++;
System.out.println(test);
2 <2正确在这里,然后它增加数量。为什么它在前面的例子中有所不同?
number--
评估为2,但在此之后所有对number
的引用评估为1.因此number-- * number
评估为2 * 1,即2。