有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中的后缀和前缀运算符的行为不同

基于甲骨文: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

感谢您的帮助


共 (1) 个答案

  1. # 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
    

    预增量:增加值,并使用新值进行计算

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