火龙信奥
  • 分享
  • 课程
  • 题库
  • CSES HARD
    • GESP
    • CSP
  • 打卡
    • 代码对战
    • 快速对战
  • 题单
  • e课堂
  • 团队
  • 荣誉墙
  • 商城
  • 登录 / 注册

第 6 课《基本运算与赋值运算》

作者: 作者的头像   huolong , 时间:2026-09-07 14:01:15 , 所有人可见, 阅读  2

第 6 课:基本运算与赋值运算

本课学习目标: 1. 熟练计算加、减、乘、除(/)以及取余(%)。 2. 彻底理解并掌握整数除法会舍去小数部分的规则。 3. 掌握取余运算符 % 的经典应用(判断整除、判断奇偶、提取个位数)。 4. 牢记算术运算符的优先级及“同级从左到右”的计算顺序。 5. 掌握复合赋值运算符(如 +=, %=)以及自增自减(++, --)的前置与后置区别。


一、 算术运算与“坑人”的整数除法

C++ 中的基本算术运算符包括:+(加)、-(减)、*(乘)、/(除)、%(取余)。

1. 整数除法 /

当 / 的两边都是整数时,结果也必须是整数,小数部分会被直接无条件舍去(不是四舍五入)。 * cout << 7 / 2; ➡️ 输出:3 (数学结果是 3.5,但 C++ 整数除法直接砍掉 .5,得到 3)。 * cout << 9 / 4; ➡️ 输出:2 (因为 $9 = 4 \times 2 + 1$)。

2. 取余运算 %

% 符号用于求两个整数相除后的余数。 * cout << 7 % 2; ➡️ 输出:1 (因为 $7 \div 2 = 3 \dots 1$)。 * cout << 10 % 3; ➡️ 输出:1 (因为 $10 = 3 \times 3 + 1$)。

💡 取余 % 的三大必考应用场景: 1. 判断能否整除:若 a % b == 0,说明 a 能被 b 整除。 2. 判断奇偶数:n % 2 == 0 为偶数;n % 2 == 1(或 != 0)为奇数。 3. 提取个位数:对任意正整数 n,n % 10 结果就是它的个位数。


二、 运算优先级与结合性

当一个表达式里有多个运算符时,C++ 严格按照以下优先级进行计算:

  1. 括号 ():最高优先级,括号内的先算。
  2. 乘、除、取余 *, /, %。
  3. 加、减 +, -。
  4. 赋值 =:最低优先级。

📌 两大黄金法则: * 先乘除取余,后加减。 * 同级运算(如连续的乘除或加减),严格按照“从左到右”的顺序计算!

经典易错表达式剖析:

  • 例 1:cout << 2 + 3 * 4;
  • 步骤:先算乘法 3 * 4 = 12,再算加法 2 + 12 = 14。结果为 14。
  • 例 2(同级从左到右):cout << 16 / 4 % 2;
  • 步骤:/ 和 % 同级,必须从左到右!
  • 先算 16 / 4 = 4;
  • 再算 4 % 2 = 0。结果为 0。(如果错误地从右往左算 4 % 2 = 0 并在 16 / 0 就会导致程序崩溃或错答案)。

三、 复合赋值运算

为了让代码更简短,C++ 提供了复合赋值运算符:

复合写法 等价展开写法 含义说明
a += b; a = a + b; 把 a + b 的结果赋给 a
a -= b; a = a - b; 把 a - b 的结果赋给 a
a *= b; a = a * b; 把 a * b 的结果赋给 a
a /= b; a = a / b; 把 a / b 的结果赋给 a
a %= b; a = a % b; 把 a % b 的结果赋给 a
  • 示例: cpp int a = 6; a %= 4; // 等价于 a = 6 % 4; cout << a; // 输出 2

四、 自增 ++ 与自减 --(考试高频陷阱)

  • a++; 或 ++a; 核心作用都是让变量 a 的值 增加 1(等价于 a += 1; 或 a = a + 1;)。
  • 但当它们参与到复杂的输出或表达式中时,前置和后置有天壤之别!
写法 名称 核心规则(口诀) 代码示例与输出结果
++a 前置自增 先加后用(先让 a 自增 1,再拿新值去参与运算) int a = 5;
cout << ++a;
👉 输出 6(a自身变成6)
a++ 后置自增 先用后加(先拿 a 原来的值去参与运算,用完后 a 再自增 1) int a = 5;
cout << a++;
👉 输出 5(随后 a 变成 6)

五、 GESP 一级真题与例题精讲

练一练 1:同级运算从左到右

【题目】 下面表达式的值是( )。

3 * 4 % 5 / 6

A. 10
B. 5
C. 2
D. 0

正确答案:D 名师解析: *、%、/ 属于同级运算符,必须严格从左到右计算: 1. 先算 3 * 4 = 12; 2. 再算 12 % 5 = 2; 3. 最后算 2 / 6。因为是整数除法,2 / 6 结果为 0。


练一练 2:复合赋值运算

【题目】 下面程序输出是( )。

int a = 6;
a %= 4;
cout << a;

A. 1
B. 2
C. 3
D. 4

正确答案:B 名师解析: a %= 4 等价于展开为 a = a % 4。把当前的 a = 6 带入进去,即 6 % 4,商 1 余 2,因此 a 的新值变为 2。


练一练 3:后置自增陷阱

【题目】 下面程序输出是( )。

int a = 5;
cout << a++;
cout << " ";
cout << a;

A. 5 6
B. 6 6
C. 6 5
D. 5 5

正确答案:A 名师解析: 1. 执行第一句 cout << a++; 时,由于是后置自增,先使用 a 的原值 5 进行输出,输出打印出 5,随后 a 在暗中自增变成了 6。 2. 执行第三句 cout << a; 时,打印出此时 a 最新的值 6。 3. 最终屏幕上输出:5 6。

—— 本文来自火龙信奥(义乌睿码科技):义乌青少年信息学奥赛与编程教育平台,专注 CSP-J/S、NOIP、GESP 竞赛培训,线上线下融合教学,助力编程升学。网址:hlcoding.com

关于火龙

  • 关于我们
  • 学员获奖
  • 预约试听
  • ACM课程
  • CSP课程
  • 学习指南

帮助中心

  • 用户协议
  • 打字练习 HOT
  • 在线画图
  • DevC++下载
  • CSP报名
  • GESP官网

推荐课程

  • C++零基础入门(可试看)
  • C++进阶提升
  • GESP考级辅导
  • GESP打卡
  • CSP-J/S打卡

公众号

火龙信奥公众号二维码

© 2017-2026 义乌市睿码科技有限公司版权所有 浙ICP备2021013995号

火龙信奥
请输入登录信息


请完成安全验证
验证码底图 滑块
向右拖动滑块完成验证
请输入用户名 / 绑定的手机号码



请输入注册信息(手机号验证码注册)





验证码5分钟有效,60秒内不可重复获取,每日最多3次

微信登录

微信登录二维码

正在生成二维码...

账号已过期,请续期。
去续期

绑定手机号

📱

为了更好地保护您的账号安全,享受完整的平台服务

请您尽快绑定手机号码