java - 哪个优先级更高,+ 或 -

Baa*_*aru -21 java operator-precedence operator-keyword

考虑这个表达式:

x1 = ++x - x++ + --x
Run Code Online (Sandbox Code Playgroud)

如果输入 x 的值 5

java中这种表达式的输出是什么,为什么?

Krz*_*cki 5

+ 或 - 没有更高的优先级

没有括号,它们只是按外观顺序执行,让我们考虑您的示例:

public class Test {

    public static void main(String[] args) {
        int x = 5;
        int x1 = ++x - x++ + --x;
        System.out.println(x1);
    }
}
Run Code Online (Sandbox Code Playgroud)

将打印 6

前/后自增/自减有四种操作:

  • ++x 将在计算前递增(在表达式中使用其值之前)
  • --x 将在评估前递减
  • x++ 计算后将增加(在表达式中使用其值后)
  • x-- 评估后将决定

将表达式分解为多个部分:

1) " ++x" x 将在表达式中使用它的值之前增加 1,所以现在它是:

6 -
Run Code Online (Sandbox Code Playgroud)

2) " - x++" x 将在表达式中使用其值后加一,所以它是:

6 - 6 , but now x=7
Run Code Online (Sandbox Code Playgroud)

3) " + --x" x 将在其值被使用之前减一,因此它最终转换为:

x1 = 6 - 6 + 6;
Run Code Online (Sandbox Code Playgroud)

这将被执行为:

x1 = 0 + 6;
x1 = 6;
Run Code Online (Sandbox Code Playgroud)

显然,+or没有更高的优先级-,因为它只是按照出现的顺序减去和添加。