Оценка выражения приоритета оператора Java - PullRequest
0 голосов
/ 06 января 2012

У меня есть следующие переменные замедления, назначения и переменные замедления

переменная e - это выражение выражения, которое должно возвращать значение выявляемых переменных в выражении;

Каков порядок приоритета операторов в переменной 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;

Ответы [ 4 ]

3 голосов
/ 06 января 2012

На самом деле ответом является 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 голосов
/ 06 января 2012

Вот ссылка с указанием приоритета оператора. Что касается вашего результата, это также может быть связано с целочисленным делением (которое берет слово результата; например, 2/20 = 0).

0 голосов
/ 06 января 2012
* 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

Вот ссылка для приоритета оператора: Приоритет оператора

0 голосов
/ 06 января 2012

Как и в школе, умножение и деление имеют приоритет перед сложением.Итак, у вас есть:

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