【问题标题】:Postfix and Prefix operators in Java behave differently [duplicate]Java中的后缀和前缀运算符的行为不同[重复]
【发布时间】:2018-01-30 07:55:52
【问题描述】:

基于 Oracle:Operator Doc Oracle

后缀incr和decr运算符的优先级高于前缀运算符。

但是当我尝试这个例子时:

int x = 1;
System.out.println(++x * x++); // prints 4

x=1;
System.out.println(x++ * ++x); // prints 3

如果我们按照运算符优先级,输出应该是:3 and 3 而不是4 and 3

感谢任何帮助。

【问题讨论】:

  • Operands are evaluated left-to-right, always。优先级与评估顺序无关。
  • ...他们应该表现不同。
  • @Array 请考虑接受一个答案,这就是论坛的运作方式,给那些花时间回答你的人加分;)

标签: java operators prefix postfix


【解决方案1】:

这只是后/前增量元素:

(++x * x++);
++x = 1 becomes 2 and use 2 for value
x++ = use 2 for value, and then 2 becomes 3
2*2 = 4

(x++ * ++x);
x++ = use 1 for value, and then 1 becomes 2
++x = 2 becomes 3 and use 3 for value
1*3 = 3

pre-increment : 增加值并使用新的值进行计算

后增量:记住旧值,用于此计算,然后递增

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 2016-03-29
    • 2013-05-06
    • 2017-12-02
    相关资源
    最近更新 更多