C语言中 '=='的优先级高于 '&' '|' '&&' '||'
之前一直以为 '=='的优先级低于 '&' '|' ,但是这是错误的,
'=='的优先级高于 '&' '|' '&&' '||',同时使用时,记得加括号修改优先级。
第一优先级:[ ] ( ) . ->
方括号,圆括号,对象,对象指针
第二优先级:- ~ ++ -- * & ! ( 类型 ) sizeof
取负, 按位取反,自增,自减,取值运算符,取地址符,逻辑非运算符,强制类型转换,长度运算符
第三优先级: / * %
乘法,除法,取模
第四优先级:+ -
表示加法,减法
注意第四优先级中的 - 表示减法,而非第一优先级中的取负
第五优先级: << >>
分别表示左移,右移
第六优先级: > >= < <=
大于(等于) 小于(等于)
第七优先级: == !=
逻辑表达中 等于,不等于
第八优先级:&
表示按位与,和取地址符不是一个概念,一般用法为 表达式&表达式
第九优先级:^
表示按位异或,用法为 表达式^表达式
第十优先级: |
按位或 用法为 表达式 | 表达式
第十一优先级:&&
表示逻辑与
第十二优先级:||
表示逻辑或
第十三优先级:?:
表示条件运算符,用法为 表达式1?表达式2:表达式3
如果表达式1成立,则结果为表达式2;不成立,则为表达式3
第十四优先级:= /= *= %= += -= <<= >>= &= ^= |=
分别表示赋值运算,除后赋值,乘后赋值,取模后赋值,加后赋值,减后赋值,左移后赋值,右移后赋值,按位与后赋值,按位异或后赋值,按位或后赋值
第十五优先级: ,
表示逗号运算符,用于表达式之间,从左到右,其值为最后一个表达式的值
参考:
1. C语言运算符优先级