c语言,在多种运算符的表达式中,运算流程是怎么样的?

如:x+a%3*(int)(x+y)%2/4,编译器是根据什么规则方法进行计算的?

优先级1-15,同级按结合方向

1.最高级运算符(左结合): 

    []

    ()

    .

    ->

2.单目运算符 (结合): 

    - (负号)

    ~

    ++

    --

    * (按地址取值)

    & (取地址)

    !

    (type) (强制类型转换,如(int)变量名,或许type(变量名) 会更好看)

    sizeof

3.算术运算符I(左结合):

    /

    *

    %

4.算术运算符II(左结合):

    +

    - (减号)

5.位运算符I(左结合):

    <<

    >>

6.关系运算符I(左结合):

    >

    >=

    <

    >=

7.关系运算符II(左结合):

    ==

    !=

8.位运算符II(左结合):

    & (按位与)

9.位运算符III (左结合):

10.位运算符IV(左结合):

11.逻辑运算符I(左结合):

    &&

12.逻辑运算符II(左结合):

    ||

13.条件运算符(结合):

    : ?(唯一一个三目运算符,糟糕的设计)

14.*后赋值(结合):

    =

    /=

    *=

    %=

    +=

    -=

    <<=

    >>=

    &=

    ^=

    |=

15.逗号运算符(左结合):

    , (相当于“;”,不断开语句的前提下连接表达式,配合不产生嵌套的分支与循环使用,糟糕的设计)

温馨提示:答案为网友推荐,仅供参考