什么是BODMAS,为什么它在编程中有用?

===============>>#1 票数: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;

使用BODMAS,您可以更清楚地说明这一点:

result = (i + 4 - (a + b)) * MAGIC_NUMBER - ANOTHER_MAGIC_NUMBER;

我想我仍然会使用第一个变体 - 更多括号,但是这样我不需要学习另一个规则而且我会忘记忘记它并导致那些奇怪的难以调试错误的风险?

只是猜测那个部分。

Mike Stone编辑:修正了Gaius指出的数学问题

===============>>#2 票数:8

另一个版本(在中学)是“请原谅我亲爱的莎莉阿姨”。

  • 括弧
  • 指数
  • 乘法
  • 加成
  • 减法

助记设备在学校很有用,并且在今天的编程中仍然有用。

===============>>#3 票数:5

我没有权力编辑@Michael Stum的答案 ,但这不太正确。 他减少了

(i + 4) - (a + b)

(i + 4 - a + b)

他们并不等同。 对于整个表达,我可以获得的最佳减少是

((i + 4) - (a + b)) * MAGIC_NUMBER - ANOTHER_MAGIC_NUMBER;

要么

(i + 4 - a - b) * MAGIC_NUMBER - ANOTHER_MAGIC_NUMBER;

===============>>#4 票数:5

表达式中的操作顺序,例如:

foo * (bar + baz^2 / foo) 
  • 首先是B球拍
  • O rders(即权力和平方根等)
  • D ivision和M ultiplication(从左到右)
  • 一个 ddition和S ubtraction(左到右)

来源: http//www.mathsisfun.com/operation-order-bodmas.html

===============>>#5 票数:4

当我在小学(加拿大)学到这一点时,它被称为BEDMAS:

B球拍
E xponents
D ivision
中号 ultiplication
一个传统
小号 ubtraction

仅适用于来自这个地区的人......

===============>>#6 票数:1

我不太确定如何适用于编程旧的BODMAS助记符无论如何。 语言之间的操作顺序无法保证,虽然许多语言按顺序保留标准操作,但并非所有操作都遵循。 然后有一些语言的操作顺序并不是那么有意义(例如Lisp方言)。 在某种程度上,如果您忘记了标准顺序并且对所有内容都使用括号(例如(a * b)+ c)或者专门学习您所使用的每种语言的顺序,那么您可能最适合编程。

===============>>#7 票数:0

我在某处读过,特别是在C / C ++中,将表达式拆分成小语句更适合优化; 因此,不是在一行中编写非常复杂的表达式,而是将这些部分缓存到变量中并逐步执行每个变量,然后随着时间的推移进行构建。

优化例程将在您拥有变量的位置使用寄存器,因此它不应该影响空间,但它可以帮助编译器一点点。

  ask by GateKiller translate from so

未解决问题?本站智能推荐: