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.把具有副作用的操作数表达式在单独的语句执行