术语" BODMAS"是什么意思?

时间:2020-03-05 18:38:03  来源:igfitidea点击:

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

解决方案

回答

http://www.easymaths.com/What_on_earth_is_Bodmas.htm:

What do you think the answer to 2 + 3 x 5 is?
  
  Is it (2 + 3) x 5 = 5 x 5 = 25 ?
  
  or 2 + (3 x 5) = 2 + 15 = 17 ?
  
  BODMAS can come to the rescue and give us rules to follow so that we always get the right answer:
  
  (B)rackets (O)rder (D)ivision (M)ultiplication (A)ddition (S)ubtraction
  
  According to BODMAS, multiplication should always be done before addition, therefore 17 is actually the correct answer according to BODMAS and will also be the answer which your calculator will give if you type in 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指出的数学问题

回答

另一个版本(在中学阶段)是"请原谅我亲爱的萨莉姨妈"。

  • 括弧
  • 指数
  • 乘法
  • 分配
  • 添加
  • 减法

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

回答

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

foo * (bar + baz^2 / foo)
  • 括号优先
  • 订单(即幂和平方根等)
  • 除法和乘法(从左到右)
  • 加减法(从左到右)

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

回答

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

括号
指数
分配
乘法
添加
减法

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

回答

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

回答

我无权编辑@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;

回答

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

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