2012-01-06 2 views
-1

У меня есть следующий переменные decelrations, присвоения и переменная declerationsОператор Java Внеочередные Expression Оценка

переменного е является выражение утверждения, которое должно возвращать значение из 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

+4

Я не понимаю, как вы могли бы получить 422 на калькуляторе. –

ответ

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 
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

Смежные вопросы