输出是什么? BODMAS?

时间:2015-11-19 07:12:23

标签: java math expression operator-precedence

有人可以解释编译器将以何种顺序评估以下表达式。结果是30,但我无法弄清楚如何。 根据BODMAS,如果我是正确的,应首先评估括号,然后进行除法,然后乘法,然后加法和减法。但是这个命令并没有给我正确答案。

public static void main(String args[] ) {
    int a = 30 - 12 / (2 * 5 ) + 1;
    System.out.println(a);
}

2 个答案:

答案 0 :(得分:2)

您对运营商优先权的理解是正确的。让我们一步一步地打破这个表达:

原始表达:

30 - 12 / (2 * 5 ) + 1;

首先,评估括号:

30 - 12 / 10 + 1;

然后,根据运算符优先级,评估*/%运算。在您的情况下,您只有/运算符。请注意,两个操作数是 int s,因此/将执行integer division,仅返回"整个"部分结果,即1

30 - 1 + 1;

我们不会从左到右评估+-

29 + 1;

30;

答案 1 :(得分:1)

根据 BODMAS ,答案应为30。

largestFile(myFile).getName();
  

首先评估括号 - int a = 30 - 12 / (2 * 5 ) + 1;

     

下一个分部 - 2*5 = 10

     

加法/减法 - 12/10 - 1

回答 - 30