C优先级

C语言中运算符的优先级决定了表达式的计算顺序。以下是基本的运算符优先级总结(从高到低):

  1. 括号 () —— 可以改变运算顺序。
  2. 指针和数组下标 * 和 [ ]
  3. 按位运算符 &|^
  4. 算术运算符 +-*/%(取模)
  5. 关系运算符 <><=>===!=
  6. 逻辑运算符 &&||
  7. 赋值运算符 =+=-= 等(按优先级高低不同,通常比关系和逻辑运算低)
  8. 逗号 ,

补充说明:

  • 乘法 (*) 和除法 (/) 的优先级高于加法 (+) 和减法 (-)。
  • 指数运算符(如 ^)在某些版本的C语言中可能不支持,通常会使用位异或运算符。
序号优先级运算符名称或含义使用形式结合方向说明
11[]数组下标数组名[常量表达式]左到右
21()圆括号(表达式)/函数名(形参表)左到右
31.成员选择(对象)对象.成员名左到右
41->成员选择(指针)对象指针->成员名左到右
52负号运算符-表达式右到左单目运算符
62~按位取反运算符~表达式右到左单目运算符
72++自增运算符++变量名/变量名++右到左单目运算符
82自减运算符–变量名/变量名–右到左单目运算符
92*取值运算符*指针变量右到左单目运算符
102&取地址运算符&变量名右到左单目运算符
112!逻辑非运算符!表达式右到左单目运算符
122(类型)强制类型运算符(数据类型)表达式右到左
132sizeof长度运算符sizeof(表达式)右到左
143/表达式/表达式左到右双目运算符
153*表达式*表达式左到右双目运算符
163%余数(取模)表达式%表达式左到右双目运算符
174+表达式+表达式左到右双目运算符
184表达式-表达式左到右双目运算符
195<<左移变量<<表达式左到右双目运算符
205>>右移变量>>表达式左到右双目运算符
216>大于表达式>表达式左到右双目运算符
226>=大于等于表达式>=表达式左到右双目运算符
236<小于表达式<表达式左到右双目运算符
246<=小于等于表达式<=表达式左到右双目运算符
257==等于表达式==表达式左到右双目运算符
267!=不等于表达式!=表达式左到右双目运算符
278&按位与表达式&表达式左到右双目运算符
289^按位异或表达式^表达式左到右双目运算符
2910|按位或表达式|表达式左到右双目运算符
3011&&逻辑与表达式&&表达式左到右双目运算符
3112||逻辑或表达式||表达式左到右双目运算符
3213?:条件运算符表达式?表达式:表达式右到左三目运算符
3314=赋值运算符变量=表达式右到左
3414/=除后赋值变量/=表达式右到左
3514*=乘后赋值变量*=表达式右到左
3614%=取模后赋值变量%=表达式右到左
3714+=加后赋值变量+=表达式右到左
3814-=减后赋值变量-=表达式右到左
3914<<=左移后赋值变量<<=表达式右到左
4014>>=右移后复制变量>>=表达式右到左
4114&=按位与后赋值变量&=表达式右到左
4214^=按位异或后赋值变量^=表达式右到左
4314|=按位或后赋值表达式|=表达式右到左
4415,逗号运算符表达式,表达式,…左到右

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部