有人可以解释编译器将以何种顺序评估以下表达式。结果是30,但我无法弄清楚如何。 根据BODMAS,如果我是正确的,应首先评估括号,然后进行除法,然后乘法,然后加法和减法。但是这个命令并没有给我正确答案。
public static void main(String args[] ) {
int a = 30 - 12 / (2 * 5 ) + 1;
System.out.println(a);
}
答案 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