操作符的优先级和求值顺序——C语言

    技术2022-05-19  21

    1.操作优先级:

    ()  []  ->  .  L-R

    !  ~  ++  --  -  (type)  *  &  sizeof  R-L

    *  /  %  L-R

    +  -  L-R

    >>  <<  L-R

    <  >  <=  >=  L-R

    ==  !=  L-R

    &  L-R

    ^  L-R

    |  L-R

    &&  L-R

    ||  L-R

    ?:  R-L

    assignments  R-L

    ,  L-R

     

    2.c语言中,只有四个运算符(&&、||、?:、,)存在规定的求值顺序。&&和||首先对左侧操作数进行求值,只有在需要时才对右侧的操作数进行求值;在a?b:c中,操作数a首先被求值,根据a的值然后再求b或c的值;而在逗号运算符中,首先对左侧操作数进行求值,然后该值被“丢弃”,再对右侧的操作数求值。分隔函数参数的逗号并非逗号运算符,g(x,y)的,并不是逗号运算符,而g((x,y))的则是。C语言中其他运算符对操作数的求值顺序是未定义的。特别的,赋值运算符并不保障任何求值顺序

    3.把具有副作用的操作数表达式在单独的语句执行


    最新回复(0)