Java后缀运算符优先级

问题描述 投票:0回答:1

在下面的代码示例中,我正在努力解决后缀运算符在比较之前以某种方式发生的想法。我知道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正确在这里,然后它增加数量。为什么它在前面的例子中有所不同?

java
1个回答
3
投票

number--评估为2,但在此之后所有对number的引用评估为1.因此number-- * number评估为2 * 1,即2。

© www.soinside.com 2019 - 2024. All rights reserved.