🎁 当前为 免费试看 内容 · 开通VIP 解锁 CSP-J/S 集训全部六大模块 + 真题模考 + 高分技巧

运算符优先级与逻辑短路

所属模块 C++程序语法初赛分值 约 4–8 分出题类型 选择 + 阅读程序难度 ★★★☆☆近5年频次 每年 1–2 题

基础概念

基通俗讲解

运算符有“谁先算”的顺序,叫优先级;同级时按结合性决定左右。逻辑运算符还有短路:一旦结果确定,右侧不再执行——这是阅读程序最常考的坑。

核心必背考点

背直接默写拿分

优先级(由高到低,节选常考):

  • () 括号最高;! 逻辑非;++ --(前缀)
  • * / % > + -
  • < <= > >= > == !=
  • & > ^ > | > && > ||
  • 赋值 = 几乎最低,+= 等复合赋值更低

短路:a && b 若 a 假则 b 不执行;a || b 若 a 真则 b 不执行。

高频难点 / 拉分考点

难考场极易丢分

&(位与)与 &&(逻辑与)完全不同:位与会真的计算每一位,且不短路;逻辑与会短路。混淆导致变量值判断错误。

出题陷阱

坑文字套路
  • if(a=5) 是赋值不是判断,恒真(且 a 变 5)——常见笔误陷阱。
  • i++ + i++ 行为未定义,初赛一般不考但别自作聪明。

90分高分技巧

技速算捷径

阅读程序遇 &&/||,先判左操作数决定右是否执行;遇 = 与 == 一眼锁定“是否为赋值”。不确定就加括号,考试虽不能改题,但平时练习养成习惯。

梯度真题(含三栏对照)

基础判断输出:短路求值

左侧为假,右侧 ++b 不执行。

C++
1int a=0,b=5;
2if(a>0 && ++b>0) a=1;
3cout<<a<<" "<<b;
▍解析:答案 0 5:a 不满足 a>0,短路,b 仍为 5。
中档位与 vs 逻辑与

& 不短路,两侧都算;结果按位运算。

C++
1int a=2,b=0;
2int x = (b!=0) & (10/b > 1); // 右式仍执行 -> 除0风险!
3cout<<x;
▍解析:此处会运行时除零;若用 && 则安全短路。考点:位与不短路。
压轴自增与优先级

前缀 ++i 先于使用;后缀 i++ 先用后增。区分清楚。

C++
1int i=3;
2int r = ++i * 2; // i先变4, r=8
3cout<<r<<" "<<i;
▍解析:答案 8 4。

错误代码 / 扣分解析 / 满分代码

❌ 扣分写法

用 = 代替 ==:
if(x=0) ...
本意判等,却变成赋值成 0,条件恒假,逻辑全错。

⚠ 扣分解析

把“比较”误写成“赋值”,程序不报错但结果诡异,初赛阅读程序常借此设陷阱,考生看不出变量被改。

✅ 满分写法

if(x == 0) ...
比较用 ==;若需同时赋值并判断,写 if((x=val) != 0) 显式表达意图。

记忆口诀

技📌 记忆口诀

“乘除加减移位比,等不等后再逻辑;与比或高莫记反,短路看左再定右。”

📝 本节自测共 6 题

做完点「提交本节自测」即时判分;单选 / 多选 / 填空混合,答错可一键收入错题本。

C++ 表达式 2 + 3 * 4 的值是?
在 !a && b || c 中,优先级最高的是?
int a=1,b=2; a>b ? a : b 的值是?
若 a = 6,b = 4,则 a % b 的结果是 ____ 。(填空) 填空题 中
关于 C++ STL,下列说法正确的有哪些?(多选) 多选题 难
布尔值 true 当作整数参与运算时等于 ____ 。(填空) 填空题 易

🧭 学习路径

📍 本页
运算符优先级与逻辑短路
收藏后可在 错题本 / 收藏页 查看(仅保存在本机浏览器)
📚 本站为 www.xxw123.com 之「CSP-J/S 初赛集训」栏目 ↩ 返回网站首页

📐 公式速查面板

📝 我的笔记

写下你的心得、易错点、口诀…

已输入 0 字 · 仅存本机 ✓ 自动保存