math -BODMAS这个词是什么意思?

Translate

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

This question and all comments follow the "Attribution Required."

所有的回答

Translate

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)r(D)ivision(M)倍增(A)种类(S)

根据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;

我认为我仍然会使用第一个变体-更多括号,但是那样一来,我不必学习另一条规则,而忘记它并引起那些奇怪的难以调试的错误的风险就降低了?

只是猜测在那部分。

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

来源
Translate

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

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

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

来源
Translate

表达式中的运算顺序,例如:

foo * (bar + baz^2 / foo) 
  • B球拍先
  • Orders(即幂和平方根等)
  • Division和Multiplication(从左到右)
  • A以及S上拉(从左到右)

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

来源
Translate

我无权编辑@Michael Stum的答案,但这不是很正确。他减少

(i + 4) - (a + b)

to

(i + 4 - a + b)

它们不相等。对于整个表达式,我能得到的最好还原是

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

or

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

当我在加拿大的小学学习这件事时,它被称为BEDMAS:

B球拍
E要素
D视觉
M复数
Addition
S无聊

只为那些来自世界这部分的人...

来源
Translate

无论如何,我不太确定如何对旧的BODMAS助记符进行编程。无法保证语言之间的操作顺序,尽管许多语言都按该顺序保持标准操作,但并非所有人都可以。然后,在某些语言中,操作顺序并没有真正意义上的意义(例如Lisp方言)。从某种意义上说,如果您忘记了标准顺序,并且对所有内容都使用括号(例如(a * b)+ c),或者专门学习所用每种语言的顺序,那么可能最好选择编程。

来源
Translate

我读到某处文章,特别是在C / C ++中,将您的表达式拆分为小语句更有利于优化。因此,您无需将所有复杂的表达式写在一行中,而是将各部分缓存到变量中并逐步执行每个部分,然后逐步进行构建。

优化例程将在您有变量的地方使用寄存器,因此它不会影响空间,但可以对编译器有所帮助。

来源