【发布时间】:2015-11-19 07:12:23
【问题描述】:
有人可以解释一下编译器会以什么顺序计算以下表达式。结果是 30,但我不知道如何。 根据 BODMAS,如果我是正确的,应该先计算括号,然后是除法,然后是乘法,然后是加法和减法。但是这个命令并没有给我正确的答案。
public static void main(String args[] ) {
int a = 30 - 12 / (2 * 5 ) + 1;
System.out.println(a);
}
【问题讨论】:
-
是的。乘法必须首先发生(因为它在括号中)。 2*5 是 10。12/10 是 1(使用整数运算)。 30 - 1 + 1 是 30。你期望结果是什么?为什么?考虑到除法运算符的 RHS 在括号内包含乘法,您如何期望除法发生在 乘法之前?
标签: java math expression operator-precedence