Java运算符优先表达式评估

时间:2012-01-06 17:31:54

标签: java operator-precedence

我有以下变量decelrations,赋值和变量declerations

变量e是一个表达式语句,它应该返回表达式中的evaulated变量的值;

e变量中opperators的预设顺序是什么?

计算它等于= 60;

使用计算器我得到422;

int a, b, c, d;

a = 10;
b = 2;
c = 1;
d = 20;

e = a + b * d / c + a + b / d;


e = 10 + 2 * 20 / 1 + 10 + 2 / 20;

e = 60;

4 个答案:

答案 0 :(得分:3)

实际上答案是60.1,但由于variables显示为60。它发生在下面

10 + (2 * (20 / 1)) + 10 + (int)(2 / 20) = 10 + (2 * 20) + 10 + (int)0.1
= 10 + 40 + 10 + 0 = 60

答案 1 :(得分:2)

Here is a link概述了运算符优先级。至于你的结果,这也可以归结为整数除法(它取决于结果的底线;例如,2/20 = 0)。

答案 2 :(得分:0)

就像在学校一样,乘法和除法优先于加法。所以你有:

10 + 2 * 20 / 1 + 10 + 2 / 20 = 10 + 40 + 10 + 0 = 60

答案 3 :(得分:0)

* takes first precedence so first, 2*20 =40,  10 + 40 / 1 + 10 + 2 / 20;
/ takes precedence so ,  10 + 40 + 10 + 0;
+ takes precedence so, 60

以下是运营商优先级的链接:Operator precedence