C中的乘法与除法

时间:2017-02-15 16:56:26

标签: c operator-precedence

C是否遵循BODMAS rule?我对乘法和除法感到困惑。

乘法是否优先于除法,或者它是否相反?

1 个答案:

答案 0 :(得分:5)

乘法,除法和余数具有相同的优先级,并且从左到右关联。

例如,x * y / z(x * y) / z
相同 x / y * z(x / y) * z相同。

这是否符合BODMAS规则似乎是一个争议的问题,但这是关于BODMAS的意义的问题,而不是关于C的语义。链接的Wikipedia article说“乘法和除法是相等的优先级“,与C一致(除了它没有提到C的余数运算符 % )。

C standard(链接到C11的N1570草案)不直接定义“运算符优先级”。相反,它定义了表达式的层次结构语法。例如,乘法表达式的语法(在6.5.5节中定义)是:

  

乘法表达
  铸表达
  乘法表达式 * cast-expression
  乘法表达式 / cast-expression
  乘法表达式 % cast-expression

cast-expression (6.5.4)可能包含也可能不包含演员;它是任何可以在乘法表达式中显示为术语的表达式。