Java中的算术运算符(初学者问题)

Moh*_*din 2 java math operators

我知道数组运算符具有优先权.然后是二元关节运算符*,/,%.然后+和 - 它们优先级低.

但我很困惑,在这个例子中,java将首先解决哪个问题.如果我们有2个运算符具有相同的优先级,那么首先在java中使用哪个运算符?

谢谢.

int x = y = -2 + 5 * 7 - 7 / 2 % 5;
Run Code Online (Sandbox Code Playgroud)

如果有人能为我解决这个问题,请逐一向我解释.因为这总是让我对考试感到困惑.

dog*_*ane 8

如果运算符具有相同的优先级,则从左到右对它们进行求值.

教程:

当具有相同优先级的运算符出现在同一表达式中时,规则必须控制首先计算的值.除了赋值运算符之外的所有二元运算符都是从左到右计算的; 赋值运算符从右到左进行计算.

在表达7 / 2 % 5时,/%具有相同的优先级,所以从左到右7 / 2 = 33 % 5 = 3.

最高优先级为*/%.以下是您的示例的细分:

  -2 + 5 * 7 - 7 / 2 % 5
= -2 + (5 * 7) - (7 / 2 % 5)
= -2 + 35 - (3 % 5)
= -2 + 35 - 3
= 30
Run Code Online (Sandbox Code Playgroud)