编辑:这是我的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 *(从左到右)
如果相反,我们是在这样的表达式中掌权,除法或调制变量,那么对于这种事情的一般规则是什么?