与其他运营商一起评估运营前和运营后声明

时间:2018-10-18 06:08:55

标签: java operator-precedence

编辑:这是我的Java类。在课堂上,我的教授也遇到了类似的问题,他所期望的答案肯定是一个数字。
编辑:(从左至右),(从右至左)是运算符的关联性

int a = 3;
int b = a++ + ++a + a * 2 + ++a;
//So b = 24 & a = 6 

我不确定为什么会这样。我的理由是:

int a = 3;
int b = a++ + ++a + a * 2 + ++a;
        (3) + (5) + (5 * 2) + (6)
        //a is 3, increments to 4 but stays as 3 [a++]
        //a is now 4 but increments to 5 [++a]
        //Since I'm evaluating left to right [a * 2] is [5 * 2]. This is because a holds the value 5.
        //a is 6 [++a]

我的逻辑正确吗?编译器会这样评估吗? 我了解在此问题上的优先顺序,其中var是任意变量,如下所示:

“发布” --------------> var ++和var-(从左到右)

“ pre” ---------------> ++ var&--var(从右到左)

“乘法” ----> * var和var *(从左到右)

如果相反,我们是在这样的表达式中掌权,除法或调制变量,那么对于这种事情的一般规则是什么?

0 个答案:

没有答案