✅ 核心总口诀(背会这个,做题够用 99%)
括号最优先,单目排第二;算术先乘除,后算加减法;关系比大小,再判等不等;逻辑先与后或,赋值永远最后。
✅ 一、优先级完整排序(从高→低,加粗为高频必记)
优先级越高,越先执行;同优先级看「结合性」
- 🔝 最高级:
()圆括号、[]数组下标 👉 结合性「自左向右」 - 单目运算符:
!(非)、++(自增)、--(自减)、-(负号)、&(取地址) 👉 结合性「自右向左」 - 算术运算:
*(乘)、/(除)、%(取余) 👉 结合性「自左向右」 - 算术运算:
+(加)、-(减) 👉 结合性「自左向右」 - 关系运算:
>、<、>=、<=(比较大小)👉 结合性「自左向右」 - 关系运算:
==(等于)、!=(不等于)(判断相等)👉 结合性「自左向右」 - 逻辑运算:
&&(逻辑与 / 且) 👉 结合性「自左向右」 - 逻辑运算:
||(逻辑或) 👉 结合性「自左向右」 - 三目运算:
?:(条件运算符) 👉 结合性「自右向左」 - 🔚 最低级:
=、+=、-=、*=、/=(赋值类)👉 结合性「自右向左」
✅ 二、高频精简版(最常用,直接抄背)
plaintext
() > !/++/-- > */% > +- > >/</>=/<= > ==/!= > && > || > ?: > =
✅ 三、2 个核心规则(必考、必懂)
✅ 规则 1:结合性(同优先级,按这个来)
✅ 「自左向右」(大部分运算符):从左到右依次算,比如 a+b-c、a>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=12 → 2+12=14 →14-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 秒记完)
- 括号第一,单目第二;
- 乘除>加减,大小比较>相等判断;
- 先与后或,赋值最后;
- 拿不准就加括号,永远不错。
三目运算符的结合性是什么?
逻辑运算符的优先级是怎样的?
赋值运算符的优先级是怎样的?