C/C++中运算符优先级汇总

编程语言C运算符优先级

优先级1: ( )、[ ]、->、 .

含义:圆括号、下标运算符、指向结构体成员运算符、结构体成员运算符

优先级2:!、~、++、――、-、(类型)、*、&、sizeof (单目运算符,结合方向自右至左)

含义:逻辑非、按位取反、自增、自减、负号、类型转换、指针、地址与、长度运算符

优先级3:*、/、%

含义:乘法、除法、求余运算符

优先级4:+、—

含义:加法、减法运算符

优先级5:<<、>>

含义:左移、右移运算符

优先级6:<、<=、>、>=

含义:关系运算符

优先级7:==、!=

含义:等于、不等于运算符

优先级8:&

含义:按位与运算符

优先级9:^

含义:按位异或运算符

优先级10:|

含义:按位或运算符

优先级11:&&

含义:逻辑与运算符

优先级12:||

含义:逻辑或运算符

优先级13:?: (三目运算符,结合方向自右至左)

含义:条件运算符

优先级14:=、+=、-+、*=、/=、%=、>>=、<<=、&=、^=、|= (结合方向自右至左)

含义:赋值运算符

优先级15: ,

含义:逗号运算符

说明:

结合方向大部分运算符都是常规的自左至右,单目运算符、三目运算符和赋值运算符除外,这三种运算符结合方向是自右至左。

优先级简记:非算移关与或条赋

解析:非指逻辑非运算符;算指算术运算符;移指移位运算符;关指关系运算符;或指按位与、按位异或及或运算符,逻辑与、逻辑或运算符;条指条件运算符;赋指赋值运算符;逗号运算符优先级最低,其余的运算符优先级都很高。

后记:因为运算符的优先级有时忘记了一些,而恰好手边没有合适的书籍参考,故记录下来,为自己也为他人提供参考。不过建议编程时最好避免考虑优先级的问题,多加几个括号就可以了。