当表达式中包含多个运算符时,C语言会根据运算符优先级和关联性来确定运算次序。正确理解和使用C语言的运算符优先级和关联性,可以避免表达式运算结果出现意外的情况。
运算符优先级
运算符优先级是指运算符的优先级别,高优先级的运算符会比低优先级的运算符先进行运算。
C语言中的运算符优先级从高到低分别为:
- ( ) 括号表达式
- ++、– 自增/自减运算符
- +、- 一元加/减运算符
- ! 逻辑非运算符
- *、/、% 乘、除、取余运算符
- +、- 加、减运算符
- <<、>> 左移、右移运算符
- <、<=、>、>= 比较运算符
- ==、!= 等于、不等于运算符
- & 按位与运算符
- ^ 按位异或运算符
- | 按位或运算符
- && 逻辑与运算符
- || 逻辑或运算符
- ? : 条件运算符
- =、*=、/=、%=、+=、-=、<<=、>>=、&=、^=、|= 赋值运算符
运算符关联性
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 // 得到最终结果