Java 关于简单算术运算的问题

Java 关于简单算术运算的问题,java,math,Java,Math,请看下面的代码: int a = 5, b = 7; System.out.println(++a + b-- - a-- * --b); 它的产出为-17。但我不明白为什么。在我看来,输出应该是-19。因为首先我们做乘法5*6=30,然后是5+6=11,最后是11-30=-19。 有人能告诉我为什么输出是-17吗?下面是一个解释,使用Java中的操作顺序: int a = 5, b = 7; ++a + b-- - a-- * --b 6 + 7 - (6 * 5

请看下面的代码:

    int a = 5, b = 7;
    System.out.println(++a + b-- - a-- * --b);
它的产出为-17。但我不明白为什么。在我看来,输出应该是-19。因为首先我们做乘法5*6=30,然后是5+6=11,最后是11-30=-19。
有人能告诉我为什么输出是-17吗?

下面是一个解释,使用Java中的操作顺序:

int a = 5, b = 7;

++a + b-- -  a-- * --b
  6 + 7   - (6 * 5)
  13 - 30
  -17

第一项计算为6,因为
++a
表示先增加
a
,然后进行计算。另一方面,
b--
计算为
7
,因为后缀
--
发生在
b
之后。由于Java中的运算顺序规则,对于乘法中涉及的两个术语,我们将它们放在括号中。同样的逻辑也适用于该产品,我们得到了30。

下面是一个解释,使用Java中的操作顺序:

int a = 5, b = 7;

++a + b-- -  a-- * --b
  6 + 7   - (6 * 5)
  13 - 30
  -17
第一项计算为6,因为
++a
表示先增加
a
,然后进行计算。另一方面,
b--
计算为
7
,因为后缀
--
发生在
b
之后。由于Java中的运算顺序规则,对于乘法中涉及的两个术语,我们将它们放在括号中。同样的逻辑也适用于此,我们对该产品的价格为30英镑。

你对此感到困惑

操作数
++a
b--
a--
--b
从左到右求值,而与运算符优先级无关。

您会感到困惑

操作数
++a
b--
a--
--b
从左到右求值,与运算符优先级无关