C / C ++中的表达式评估不符合BODMAS规则吗?

当在C / C ++中评估表达式时,它是否遵循BODMAS [Bracket open Division Multiply Addition Substraction]规则? 如果不是,那么他们如何评估?

编辑:更清楚,如果根据BODMAS规则评估以下表达式,

(5 + 3)/ 8 * 9

首先处理括号中的内容。

8/8 * 9。

然后分部完成了。

1 * 9

然后乘法等等。

运营商远不止于此。 您可以找到C ++和C的优先级表。

但是,是的,你会发现它尊重这一点。 (虽然我不确定这正是你所说的……)

这个问题有两个答案。

一个是C ++ 确实遵循标准的数学优先级规则,您将其称为BODMAS。 您可以在此处查看 C ++将其所有运算符关联的顺序。

但是,如果操作中涉及的任何表达式都有副作用,那么C ++ 不能保证在人们可能认为是标准数学顺序的情况下对它们进行评估。 然而,这是一个高级主题。

其他人已经为您提供了运营商优先级列表的链接。 这些都很好。 但是,如果您需要查看运算符优先级表以确定您的代码告诉计算机要执行的操作, 对您的代码维护者(包括将来的您)表示同情,并使用括号。 它使您的意图更加清晰,从长远来看可以节省时间和心痛。

C ++: http : //msdn.microsoft.com/en-us/library/126fe14k.aspx

C#: http : //msdn.microsoft.com/en-us/library/aa691323(VS.71).aspx

C按照以下运算符优先级规则确定的精确序列应用算术表达式中的运算符,这些规则通常与代数中的相同:

首先评估包含在括号对中的表达式中的运算符。 括号被认为处于“最高优先级”。在嵌套或嵌入的括号中,如((a + b)+ c)
首先应用最里面的括号中的运算符。

接下来应用乘法,除法和余数运算。 如果表达式包含多个乘法,除法和余数运算,则评估从左到右进行。 乘法,除法和余数据说与优先级相同。 接下来评估加法和减法操作。 如果表达式包含多个加法和减法运算,则评估从左到右进行。 加法和减法也具有相同的优先级,低于乘法,除法和余数运算的优先级。 最后评估赋值运算符(=)。