C语言 运算符优先级和关联性

  • Post category:C

当表达式中包含多个运算符时,C语言会根据运算符优先级和关联性来确定运算次序。正确理解和使用C语言的运算符优先级和关联性,可以避免表达式运算结果出现意外的情况。

运算符优先级

运算符优先级是指运算符的优先级别,高优先级的运算符会比低优先级的运算符先进行运算。

C语言中的运算符优先级从高到低分别为:

  1. ( ) 括号表达式
  2. ++、– 自增/自减运算符
  3. +、- 一元加/减运算符
  4. ! 逻辑非运算符
  5. *、/、% 乘、除、取余运算符
  6. +、- 加、减运算符
  7. <<、>> 左移、右移运算符
  8. <、<=、>、>= 比较运算符
  9. ==、!= 等于、不等于运算符
  10. & 按位与运算符
  11. ^ 按位异或运算符
  12. | 按位或运算符
  13. && 逻辑与运算符
  14. || 逻辑或运算符
  15. ? : 条件运算符
  16. =、*=、/=、%=、+=、-=、<<=、>>=、&=、^=、|= 赋值运算符

运算符关联性

C语言中的运算符关联性是指相同优先级的运算符的运算次序。运算符关联性分为从左到右和从右到左两种情况。

例1:求a+ b * c,a=2,b=3,c=4。

根据运算符优先级,乘法运算符的优先级高于加法运算符,所以 b * c 先计算,得到 12 ,然后再与 a 相加,所以最终的结果是 14。

具体的计算过程如下:

a + b * c
= 2 + 3 * 4  // b * c
= 2 + 12     // 上一步的结果与 a 相加
= 14         // 得到最终结果

例2:求a / b % c,a=10,b=4,c=3。

根据运算符优先级,先计算 a / b ,得到 2 ,然后再对 2 取余数,得到 2 % 3 = 2,所以最终的结果是 2。

具体的计算过程如下:

a / b % c
= 10 / 4 % 3  // a / b
= 2 % 3       // 上一步的结果对 c 取余
= 2           // 得到最终结果