C语言运算符的优先级分为15个等级,从高到低依次为:
括号()、箭头运算符(->)、指针运算符(*)
单目运算符(!)、正负号(+,-)
乘法运算符(*)、除法运算符(/)、取模运算符(%)
加法运算符(+)、减法运算符(-)
比较运算符(>)、左移运算符(<<)
等于运算符(==)、不等于运算符(!=)
按位与运算符(&)
按位异或运算符(^)
按位或运算符(|)
逻辑与运算符(&&)
逻辑或运算符(||)
条件运算符(?)
赋值运算符(=)
逗号运算符(,)
结合性方面,括号内的表达式优先级最高,其次是从左至右结合的运算符,最后是从右至左结合的运算符。赋值运算符、条件运算符和逗号运算符是从右至左结合的。
1. `a = b = c = 6;` 这里赋值运算符从右至左结合,先计算 `c = 6`,然后 `b = c`,最后 `a = b`。
2. `int result = a + b * c / d;` 这里乘法和除法的优先级高于加法,因此先计算 `b * c`,然后除以 `d`,最后加上 `a`。
3. `a = ++a;` 这里自增运算符 `++` 的优先级高于赋值运算符 `=`,所以先自增 `a`,再赋值给 `a`。
理解这些运算符的优先级和结合性有助于编写更清晰、更高效的C语言代码。