操作符的优先级和求值顺序——C语⾔
1.操作优先级:
()  []  ->  .  L-R
!  ~  ++  --  -  (type)  *  &  sizeof  R-L
*  /  %  L-R
+  -  L-R
>>  <<  L-R
<  >  <=  >=  L-R
==  !=  L-R
&  L-R
^  L-R
|  L-R
c语言中的逗号表达式
&&  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.把具有副作⽤的操作数表达式在单独的语句执⾏