C语言中的运算符优先级和结合性


运算符优先级决定了表达式中项的组合方式,并决定了表达式的计算顺序。某些运算符比其他运算符具有更高的优先级;例如,乘法运算符比加法运算符具有更高的优先级。

例如,x = 7 + 3 * 2; 在这里,x 被赋值为 13,而不是 20,因为运算符 * 的优先级高于 +,所以它首先与 3*2 相乘,然后加到 7 中。

这里,优先级最高的运算符出现在表的最上面,优先级最低的出现在最下面。在表达式中,优先级较高的运算符将首先被计算。

类别运算符结合性
后缀() [] -> . ++ --从左到右
一元+ - ! ~ ++ -- (type)* & sizeof从右到左
乘法* / %从左到右
加法+ -从左到右
移位<< >>从左到右
关系< <= > >=从左到右
相等== !=从左到右
按位与&从左到右
按位异或^从左到右
按位或|从左到右
逻辑与&&从左到右
逻辑或||从左到右
条件?:从右到左
赋值= += -= *= /= %= >>= <<= &= ^= |=从右到左
逗号,从左到右

示例代码

#include <stdio.h>
main() {
   int a = 20;
   int b = 10;
   int c = 15;
   int d = 5;
   int e;
   e = (a + b) * c / d; // ( 30 * 15 ) / 5
   printf("Value of (a + b) * c / d is : %d\n", e );
   e = ((a + b) * c) / d; // (30 * 15 ) / 5
   printf("Value of ((a + b) * c) / d is : %d\n" , e );
   e = (a + b) * (c / d); // (30) * (15/5)
   printf("Value of (a + b) * (c / d) is : %d\n", e );
   e = a + (b * c) / d; // 20 + (150/5)
   printf("Value of a + (b * c) / d is : %d\n" , e );
   return 0;
}

输出

Value of (a + b) * c / d is : 90
Value of ((a + b) * c) / d is : 90
Value of (a + b) * (c / d) is : 90
Value of a + (b * c) / d is : 50

更新于: 2019年7月30日

10K+ 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告