Mic*_*tum 20
http://www.easymaths.com/What_on_earth_is_Bodmas.htm:
您认为2 + 3 x 5的答案是什么?
是(2 + 3)x 5 = 5 x 5 = 25?
或2 +(3 x 5)= 2 + 15 = 17?
BODMAS可以拯救并给我们遵守规则,以便我们始终得到正确的答案:
(B)球拍(O)rder(D)ivision(M)ultiplication(A)ddition(S)ubtraction
根据BODMAS,乘法应该总是在加法之前完成,因此17根据BODMAS实际上是正确的答案,并且如果你输入2 + 3 x 5,也将是你的计算器给出的答案.
为什么它在编程中有用?不知道,但我认为这是因为你可以摆脱一些括号?我是一个非常防守的程序员,所以我的线条看起来像这样:
result = (((i + 4) - (a + b)) * MAGIC_NUMBER) - ANOTHER_MAGIC_NUMBER;
Run Code Online (Sandbox Code Playgroud)
使用BODMAS,您可以更清楚地说明这一点:
result = (i + 4 - (a + b)) * MAGIC_NUMBER - ANOTHER_MAGIC_NUMBER;
Run Code Online (Sandbox Code Playgroud)
我想我仍然使用第一个变体 - 更多括号,但是这样我不需要学习另一个规则而且我会忘记忘记它并导致那些奇怪的难以调试错误的风险?
只是猜测那个部分.
Mike Stone编辑:修正了Gaius指出的数学问题
表达式中的操作顺序,例如:
foo * (bar + baz^2 / foo)
Run Code Online (Sandbox Code Playgroud)
来源:http://www.mathsisfun.com/operation-order-bodmas.html
我没有权力编辑@Michael Stum的答案,但这不太正确.他减少了
(i + 4) - (a + b)
Run Code Online (Sandbox Code Playgroud)
至
(i + 4 - a + b)
Run Code Online (Sandbox Code Playgroud)
他们并不等同.对于整个表达,我可以获得的最佳减少是
((i + 4) - (a + b)) * MAGIC_NUMBER - ANOTHER_MAGIC_NUMBER;
Run Code Online (Sandbox Code Playgroud)
要么
(i + 4 - a - b) * MAGIC_NUMBER - ANOTHER_MAGIC_NUMBER;
Run Code Online (Sandbox Code Playgroud)