C语言中的运算符的优先级

1 阅读3分钟

✅ 核心总口诀(背会这个,做题够用 99%)

括号最优先,单目排第二;算术先乘除,后算加减法;关系比大小,再判等不等;逻辑先与后或,赋值永远最后。

✅ 一、优先级完整排序(从高→低,加粗为高频必记)

优先级越高,越先执行;同优先级看「结合性」

  1. 🔝 最高级:() 圆括号、[] 数组下标 👉 结合性「自左向右」
  2. 单目运算符:!(非)、++(自增)、--(自减)、-(负号)、&(取地址) 👉 结合性「自右向左」
  3. 算术运算:*(乘)、/(除)、%(取余) 👉 结合性「自左向右」
  4. 算术运算:+(加)、-(减) 👉 结合性「自左向右」
  5. 关系运算:><>=<=(比较大小)👉 结合性「自左向右」
  6. 关系运算:==(等于)、!=(不等于)(判断相等)👉 结合性「自左向右」
  7. 逻辑运算:&&(逻辑与 / 且) 👉 结合性「自左向右」
  8. 逻辑运算:||(逻辑或) 👉 结合性「自左向右」
  9. 三目运算:?:(条件运算符) 👉 结合性「自右向左」
  10. 🔚 最低级:=+=-=*=/=(赋值类)👉 结合性「自右向左」

✅ 二、高频精简版(最常用,直接抄背)

plaintext

()  >  !/++/--  >  */%  >  +-  >  >/</>=/<=  >  ==/!=  >  &&  >  ||  >  ?:  >  =

✅ 三、2 个核心规则(必考、必懂)

✅ 规则 1:结合性(同优先级,按这个来)

✅ 「自左向右」(大部分运算符):从左到右依次算,比如 a+b-ca>b&&b>c✅ 「自右向左」(3 类特殊):赋值=、单目!/-/++、三目?:

例子:a=b=c=10 → 等价 a=(b=(c=10)),最终 a/b/c 全为 10

✅ 规则 2:万能技巧

**不确定优先级,直接加 () !**括号优先级最高,能强制改变运算顺序,代码更清晰,永远不会出错。

例子:5+3*2 ✅ 写成 5+(3*2),一眼看清运算顺序

✅ 四、4 个顶级易错点(新手必踩坑,重点记)

❌ 坑 1:混淆 ===

=赋值(优先级最低),给变量赋值用;✅ ==判断相等(优先级中等),比较两个值用;

❌ 错误:if(a=10) → 这是赋值,永远为真✅ 正确:if(a==10) → 这是判断 a 是否等于 10

❌ 坑 2:连续比较不能连写

C 语言不支持 10<a<20 这种写法!

❌ 错误:if(10<a<20)✅ 正确:if(10<a && a<20) → 拆成「且」的关系

❌ 坑 3:&& 优先级 > ||

逻辑运算先算「且」,再算「或」,口诀:先与后或

例子:a>0 || a<0 && a>-10 → 先算 a<0&&a>-10,再算 ||

❌ 坑 4:赋值 = 优先级最低

所有运算全部算完,最后才执行赋值!

例子:int a=3+5*2 → 先算 5×2=10 → 再算 3+10=13 → 最后赋值 a=13

✅ 五、3 道典型例题(秒懂、练会)

✅ 例题 1:算术运算

c

运行

int a=2, b=3, c=4;
int res = a + b*c -1;
// 优先级:* > +- → 3×4=122+12=1414-1=13 → res=13

✅ 例题 2:逻辑运算

c

运行

int a=5, b=0;
int res = a>3 && b>0 || a<10;
// 优先级:> > && > || → 5>3=真,b>0=假 → 真&&假=假 → 假||真=真 → res=1

✅ 例题 3:赋值运算

c

运行

int a=1;
int b = (a+2)*3;
// 优先级:() > * > = → 先算a+2=3 → 再算3×3=9 → 最后赋值b=9

✅ 最终极简总结(30 秒记完)

  1. 括号第一,单目第二;
  2. 乘除>加减,大小比较>相等判断;
  3. 先与后或,赋值最后;
  4. 拿不准就加括号,永远不错。

三目运算符的结合性是什么?

逻辑运算符的优先级是怎样的?

赋值运算符的优先级是怎样的?