2017-02-15 84 views
1

C遵循BODMAS rule?我对乘法和分裂感到困惑。C中的乘法与除法

乘法的优先级高于除法还是其他方法?

+0

[是,然后是一些](http://en.cppreference.com/w/c/language/operator_precedence) – StoryTeller

+6

'*',''''''''具有相同的优先级。评估从左到右 – chux

+0

BODMAS规则怎么样? –

回答

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节中定义)的语法是:

乘法表达
          铸表达
          乘法表达式*铸表达
          乘法表达/铸表达
          乘法表达%铸表达

铸表达(6.5.4)可以或可以不包括一个转换运算符;它的任何表达式都可以作为乘法表达式中的术语出现。

+1

注意:'%'最好称为_remainder_运算符为_modulus_,它具有各种有关负运算数的数学定义,未在C中定义。关于BODMAS的信息性答案。 – chux

+1

@chux:很对,固定。 –