Appearance
04.🚦 C++的运算符
在编程里,我们需要让计算机帮我们做数学计算,也需要根据条件做出“判断”。这就需要用到运算符——它们是计算和判断的工具。 本章将带你认识 C++ 中最常用的几类运算符:
- 算数运算符(
+ - * / %) - 关系运算符(
< > <= >= == !=) - 赋值运算符(
=以及+=等扩展形式) - 逻辑运算符(
&& || !) - 三目运算符(
?:)
NOTE
实际上,C++ 的运算符还有很多,比如位运算符、指针相关运算符等。但在我们入门阶段不常用,理解起来也有难度,所以这里暂时不介绍。
1. 算数运算符 🔍
算数运算符就是我们用来做加减乘除和求余数的符号,这和我们平时学习的数学一致,包括运算法则也是一样的。
也就是:
- 先乘除后加减
- 有括号先算括号
- C++ 中只使用小括号
(),没有中括号[]和大括号{}。
| 运算符 | 作用 | 示例 |
|---|---|---|
| + | 加法 | 3 + 2 = 5 |
| - | 减法 | 5 - 1 = 4 |
| * | 乘法 | 4 * 3 = 12 |
| / | 除法(整数除法) | 10 / 3 = 3 |
| % | 取余(求余数) | 10 % 3 = 1 |
cpp
int a = 10;
int b = 3;
cout << a / b << endl; // 输出 3
cout << a % b << endl; // 输出 1WARNING
整数除法会去掉小数部分,比如 10 / 3 的结果是 3,而不是 3.333。 如果想得到小数,至少一个数字必须使用浮点数类型,例如 10.0 / 3,结果才是 3.333...。
2. 关系运算符 🎋
关系运算符用于比较两个值,结果是 true(真)或 false(假),常用在条件判断中。
| 运算符 | 作用 | 示例 |
|---|---|---|
| < | 小于 | 3 < 5 结果是 true |
| > | 大于 | 5 > 7 结果是 false |
| <= | 小于等于 | 5 <= 5 结果是 true |
| >= | 大于等于 | 6 >= 7 结果是 false |
| == | 等于 | 3 == 3 结果是 true |
| != | 不等于 | 3 != 4 结果是 true |
示例程序:
cpp
int x = 5;
int y = 7;
cout << (x < y) << endl; // 输出 1(true)
cout << (x == y) << endl; // 输出 0(false)3. 赋值运算符 🧵
赋值运算符是把右边的值“赋给”左边的变量:
cpp
int a = 10;
a = 20; // 把 20 赋值给 a,覆盖原来的 10
cout << a << endl; // 输出 20除了最基本的 =,C++ 还支持复合赋值运算符:
| 运算符 | 含义 | 示例 |
|---|---|---|
| += | 加后赋值 | a += 5 等价于 a = a + 5 |
| -= | 减后赋值 | a -= 2 等价于 a = a - 2 |
| *= | 乘后赋值 | a *= 3 等价于 a = a * 3 |
| /= | 除后赋值 | a /= 2 等价于 a = a / 2 |
| %= | 余数后赋值 | a %= 3 等价于 a = a % 3 |
4. 逻辑运算符 🎄
在编程里,我们不仅需要做数学计算,还常常要根据多个条件同时成立或者满足其中一个条件,做出不同的决定。 这时候,单纯用算数运算符是不够的,必须用逻辑运算符来组合和判断条件。
| 运算符 | 作用 | 示例 | 说明 |
|---|---|---|---|
| && | 与(并且) | (x > 0) && (x < 10) | 两个条件都为真,结果才为真 |
| || | 或(或者) | `(x < 0) | |
| ! | 非(取反) | !(x == 5) | 结果是 false 变 true,反之亦然 |
为什么要有逻辑运算符? 因为生活中的“判断”很复杂,比如“今天是星期六且天气晴朗”才去公园,或者“如果你完成作业或者考试及格”就可以玩游戏。 这类“并且”“或者”“不”的关系,用逻辑运算符来表达最清楚。
逻辑运算符主要有三种:
- &&(与):要求所有条件都成立才算成立,像“并且”的意思。
- ||(或):只要有一个条件成立就算成立,像“或者”的意思。
- !(非):把条件的结果取反,原来是对的变错,原来是错的变对。
示例程序:
cpp
int x = 7;
cout << ((x > 0) && (x < 10)) << endl; // 输出 1(true)
cout << ((x < 0) || (x > 10)) << endl; // 输出 0(false)
cout << !(x == 7) << endl; // 输出 0(false)TIP
你可以使用多个逻辑运算符,比如:x > 0 && x < 10 || y == 5将多个条件结合起来,你可以根据你的需要来组合它们。
5. 三目运算符 🎨
三目运算符是一种简洁的条件判断写法,格式如下:
cpp
条件 ? 条件为真时的值 : 条件为假时的值;示例程序:
cpp
int a = 5;
int b = (a > 3) ? 100 : 200; // 如果 a > 3,b 等于 100,否则为 200
cout << b << endl; // 输出 100NOTE
三目运算符适合简单判断。条件太复杂时,请使用 if 语句来写得更清楚。(if语句在后续章节介绍)
6. 拓展🌱
C++ 还有两个经常出现在程序里的特殊运算符:
| 运算符 | 作用 | 示例 | 含义 |
|---|---|---|---|
| ++ | 自增 | x++ 或 ++x | 变量增加 1 |
| -- | 自减 | x-- 或 --x | 变量减少 1 |
示例程序:
cpp
int a = 5;
a++;
cout << a << endl; // 输出 6TIP
虽然 ++x 和 x++ 都是让变量加 1,但它们用在程序里的表现不一样:
cpp
int a = 5;
int b = ++a; // 先把 a 增加 1,a 变成 6,然后 b = 6
int c = a++; // 先把 c 赋值为 a 的当前值 6,然后 a 再加 1,a 变成 7
cout << b << endl; // 输出 6
cout << c << endl; // 输出 6
cout << a << endl; // 输出 7++x(前置自增):先把变量加 1,然后用新值。x++(后置自增):先用变量当前值,然后变量再加 1。
单独写一行 x++ 或 ++x 时,效果一样,都是让变量加 1。区别只在它们参与复杂表达式时才会显现。初学阶段,先掌握加1的作用,再慢慢理解区别即可。
7. 小结 🎗
- 算数运算符:用于加减乘除、求余
- 关系运算符:用于比较两个值
- 赋值运算符:把值赋给变量,还有加法等的简写形式
- 逻辑运算符:用于组合多个条件
- 三目运算符:用于写简单的条件判断
8. 练习题 📝
- 输入两个整数,输出它们的和、差、积、商(整数除法)和余数。
- 判断输入的一个整数是否在 1 到 100 之间(包括 1 和 100),输出
true或false。 - 给定两个整数,判断它们是否相等,并输出结果。
- 输入一个整数,判断它是否是偶数(提示:偶数能被 2 整除)。
- 使用三目运算符判断一个整数是否为正数,正数输出 “正”,否则输出 “非正”。
- 给定一个整数
x,输出true当x大于 0 并且小于 100,否则输出false。****