繁体   English   中英

Java后缀运算符优先级

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM