2012-01-06 44 views
-1

我有以下变量decelrations,分配和可变declerations的Java运算符优先级表达式求值

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

e变量中操作符的预置顺序是什么?

计算出它等于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; 
+0

http://bmanolov.free.fr/javaoperators.php – mcfinnigan 2012-01-06 17:35:17

+4

我看不出你如何能在一个计算器得到422。 – 2012-01-06 17:36:12

回答

3

其实答案是60.1但由于variables是INT其显示60。这是如下情况发生

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

Here is a link概述运营商的优先顺序。至于你的结果,这也可以归因于整数除法(这取决于结果的底线;例如,2/20 = 0)。

0

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

10 + 2 * 20/1 + 10 + 2/20 = 10 + 40 + 10 + 0 = 60 
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