C语言操作符优先级

C语言操作符优先级_第1张图片
在平时写代码时,经常会用到操作符,但是如果不了解这些操作符的优先级,可能会让程序的执行效果和我们预期的不一样。
例如:

	int a = 2;
	int b = 3;
	int c = 4;
	//int ret = a + b * c;//我们想要执行的顺序是a+b的值再乘c
	
	//如果了解操作符优先级,即可避免
	int ret  =(a + b) * c;
	

C语言中的操作符优先级是指在一个表达式中,哪些操作符会被先执行。
下面是整理的C语言操作符的优先级表格,按照从高到低的顺序排列:

优先级 运算符 作用
1 () 圆括号用于改变运算符的优先级,括号中的表达式先被求值
2 [] 方括号用于访问数组中的元素,也可以用于指针变量的偏移量
3 -> 结构体指针访问运算符,用于访问结构体指针所指向的结构体中的成员
4 ++ -- 自增、自减运算符,用于将变量的值加一或减一
5 ! ~ - + 逻辑非、按位取反、负号、正号等运算符
6 * / % 乘、除、取模
7 + - 加、减
8 << >> 左移、右移
9 < <= > >= 小于、小于等于、大于、大于等于
10 == != 等于、不等于
11 & 按位与
12 ^ 按位异或
13 || 按位或
14 && 逻辑与
15 | 逻辑或
16 ?: 三元运算符
17 = 赋值运算符
18 += -= *= /= %= &= ^= = <<= >>= 复合赋值运算符
19 , 逗号运算符,用于连接多个表达式

tips
如果是同级的操作符,执行顺序从左至右
如果不确定优先级,可以使用括号来明确运算的优先级

C语言中还有一些特殊的运算符,如:

  • sizeof运算符:用于计算数据类型或变量的大小,没有优先级;
  • &运算符:取地址运算符,用于获取变量的地址,优先级较低;
  • *运算符:间接访问运算符,用于访问指针所指向的内存地址中存储的值,优先级较低;
  • ->*运算符:结构体指针成员访问运算符,优先级较低;
  • .运算符:结构体成员访问运算符,优先级较低。

这些操作符的优先级相对较低,使用频率也比较低,但也需要了解。

你可能感兴趣的:(原创,C语言,c语言,开发语言)