术语“BODMAS”是什么意思?

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

0
额外 编辑
意见: 6
我通常使用空格来显示4 + - / *操作的操作顺序,如下所示:a + b * c对于所有其他操作符,我使用括号使操作的顺序变得清晰。
额外 作者 Jeremy Ruten,
今天之前我从未见过BODMAS。我学到了PEMDAS(Parens,Exponents,Multiplication,Division,Addition,Subtraction)。
额外 作者 FishBasketGordo,
额外 作者 foxy,

7 答案

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

Brackets
Exponents
Division
Multiplication
Addition
Subtraction

只为来自世界各地的人们...

0
额外
同样在这里新西兰。 “指数”对我来说比一般命名的“订单”更有意义,
额外 作者 Orion Edwards,

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的说法,乘法应该总是在加法之前完成,因此根据BODMAS,17实际上是正确的答案,并且如果您键入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;

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

只是猜测那个部分。

迈克斯通编辑:固定数学,盖伊斯指出

0
额外
说实话,我与你的“托架”风格,而不是所谓的优化版本。也许这只是我,但我发现> result =(((i + 4) - (a + b))* MAGIC_NUMBER) - ANOTHER_MAGIC_NUMBER;更容易解析心理...
额外 作者 ZombieSheep,

无论如何,我不确定如何适用于编程旧的BODMAS助记符。语言之间的操作顺序无法保证,而且许多人仍然按照该顺序保持标准操作,但并非所有操作都是如此。然后有些语言的操作顺序并不是真的有意义(例如,Lisp方言)。从某种意义上说,如果忘记标准订单,并且对所有内容(例如(a * b)+ c)使用括号或专门了解您所使用的每种语言的顺序,那么编程可能会更好。

0
额外

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

foo * (bar + baz^2 / foo) 
  • Brackets first
  • Orders (ie Powers and Square Roots, etc.)
  • Division and Multiplication (left-to-right)
  • Addition and Subtraction (left-to-right)

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

0
额外

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

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

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

0
额外

我没有权力编辑 @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;
0
额外

特别是在C / C ++中,我阅读的地方将你的表达式分解为小的语句对于优化更好;因此,不要在一行中编写极其复​​杂的表达式,而是将这些部分缓存到变量中,并逐步完成每个变量,然后在进行时逐步构建它们。

优化例程将在有变量的地方使用寄存器,所以它不应该影响空间,但它可以帮助编译器一点点。

0
额外