C是否遵循BODMAS rule?我对乘法和除法感到困惑。
乘法是否优先于除法,或者它是否相反?
答案 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)可能包含也可能不包含演员;它是任何可以在乘法表达式中显示为术语的表达式。