英文:
How to evaluate the java operators evaluation
问题
我是Java新手,正在尝试理解计算步骤是如何执行以达到最终结果的。最终答案是49。根据运算符的优先级,我的计算结果不是49。
以下是我的代码和表达式:
class Test
{
public static void main(String args[])
{
int a = 6, b = 5;
a = a + a++ % b++ * a + b++ * --b;
System.out.print(a);
}
}
希望这可以帮助你理解代码的运行结果。
英文:
I am java newbie and trying to understand how calculation steps are performed to achieve final result. The final answer is coming as 49. Looking at precedence operators hierarchy my calculation is not coming to 49.
Following is my code with expression:
class Test
{
public static void main(String args[])
{
int a = 6, b = 5;
a = a + a++ % b++ *a + b++ * --b;
System.out.print(a)
}
}
答案1
得分: 0
操作符有优先级。可以在这里找到一个表格(链接:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html)。
另外,您可以使用圆括号(括号)来强制执行正确的计算顺序。
英文:
Operators have priorities. There is a table of these here.
Also, you can use round brackets (parentheses) for forcing the right sequence of calculations.
答案2
得分: 0
取模运算与除法和乘法具有相同的优先级。下一个优先级是加法和减法。操作从左到右进行。
为了更清晰,添加括号:
( a ) + ( a++ % b++ *a ) + ( b++ * --b )
组 I II III
- a++ % b++ *a 计算如下:a. (6 % 5) = 1
b. 1 * 6 到目前为止,a = 6,b = 5
完成此操作后,a 和 b 的值分别增加到 7 和 6。即后缀递增仅在模数/乘法/除法在步骤或组中完成后发生,如上所示。
-
b++ * --b => 6 * 6。得到值为 36
完成此操作后,执行 ++ 操作,但也执行了 -- 操作,有效地将 b 的值保留为 6。 -
下一个操作是加法。即 7 + 6 + 36 = 49
参考链接:https://www.programiz.com/java-programming/operator-precedence
英文:
Modulo has same precedence as division and multiplication. The next precedence goes to addition and subtraction.Operations happen left to right.
Adding brackets for better clarity:
( a ) + ( a++ % b++ *a ) + ( b++ * --b )
group I II III
- a++ % b++ *a evaluated as :a. (6 % 5) = 1
b. 1 * 6 till now, a = 6, b = 5
Having completed this operation, the value of a & b are incremented to 7 & 6 respectively. i.e the post fix increment happens only after the modulo/multiplication/division during a step or group as shown above.
-
b++ * --b => 6 * 6. gives value of 36
Having completed this operation the ++ operation is performed but -- is also performed, effectively leaving the value of b at 6. -
next operation is addition. i.e 7 + 6 + 36 = 49
Reference: https://www.programiz.com/java-programming/operator-precedence
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论