[英]Java postfix operator precedence
在下面的代码示例中,我很难理解后缀运算符是否在比较之前发生。 我知道后缀具有更高的优先级,但是根据java docs:
后缀版本(result ++)的值为原始值。
所以在这段代码中:
int number = 2;
boolean bob = number < number-- * number;
System.out.println(bob +" "+number );
输出时,数字应为1
。 那是意料之中的。 问题是鲍勃是假的。 如果尽管有后缀,该数字仍使用“原始值”-那么问题是否应该评估为: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。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.