运算符
Q
什么是运算符?
+
运算符 是C++中用于对数据进行特定操作的符号,就像数学中的加减乘除符号一样。
Q
C++有哪些主要类型的运算符?
+
- 算术运算符 用于数学计算
- 关系运算符 用于比较判断
- 逻辑运算符 用于逻辑运算
- 位运算符 用于二进制位操作
- 赋值运算符 用于赋值操作
- 其他运算符 包括三元运算符等
Q
什么是C++表达式?
重点
+
C++表达式是由 运算符 和 操作数 组成的代码片段,它能被计算并产生一个值。
操作数 可以是:字面量、变量、常量、函数调用等
表达式的重要特性:
- 必有返回值:每个表达式都会产生一个值
- 类型确定:表达式结果有明确的类型
- 可组合性:表达式可以嵌套在其他表达式中
表达式是C++程序的基本构建块,几乎所有的操作都是由表达式完成的。
Q
算术运算符有哪些?
+
| 运算符 | 名称 | 操作数 | 功能描述 | 示例 | 结果 |
|---|---|---|---|---|---|
+ | 加法 | 双目 | 两个操作数相加 | 5 + 3 | 8 |
- | 减法 | 双目 | 两个操作数相减 | 10 - 4 | 6 |
* | 乘法 | 双目 | 两个操作数相乘 | 3 * 4 | 12 |
/ | 除法 | 双目 | 两个操作数相除 | 15 / 4 | 3 |
% | 取余 | 双目 | 返回除法余数 | 15 % 4 | 3 |
++ | 自增 | 单目 | 操作数加1 | x++ 或 ++x | x+1 |
-- | 自减 | 单目 | 操作数减1 | x-- 或 --x | x-1 |
+和-做单目运算符时,表示正负号- 先乘除后加减,一元运算符比乘除高(优先级)
Q
关系运算符有哪些?
+
| 运算符 | 名称 | 操作数 | 示例 | 结果 |
|---|---|---|---|---|
== | 等于 | 双目 | 5 == 3 | false |
!= | 不等于 | 双目 | 5 != 3 | true |
> | 大于 | 双目 | 5 > 3 | true |
< | 小于 | 双目 | 5 < 3 | false |
>= | 大于等于 | 双目 | 5 >= 5 | true |
<= | 小于等于 | 双目 | 5 <= 3 | false |
- 关系表达式 运算结果 为
bool类型 - 关系运算符的优先级 低于 算术运算符
- 不要将赋值运算符
=和关系运算符==混淆 - 关系运算符常用于条件判断语句(如
if、while等)
Q
逻辑运算符有哪些?
+
| 运算符 | 名称 | 操作数 | 示例 | 结果 |
|---|---|---|---|---|
&& | 逻辑与 | 双目 | true && false | false |
|| | 逻辑或 | 双目 | true || false | true |
! | 逻辑非 | 单目 | !true | false |
运算规则与真值表
- 逻辑与
&&: 同真为真,一假为假 - 逻辑或
||: 一真为真,同假为假 - 逻辑非
!: 真变假,假变真
| A | B | A && B | A || B | !A |
|---|---|---|---|---|
| 真 | 真 | 真 | 真 | 假 |
| 真 | 假 | 假 | 真 | 假 |
| 假 | 真 | 假 | 真 | 真 |
| 假 | 假 | 假 | 假 | 真 |
重要特性
&&短路求值:如果第一个操作数为假,不会计算第二个操作数||短路求值:如果第一个操作数为真,不会计算第二个操作数- 运算优先级:
!>&&>|| - 逻辑表达式的 操作数 和 运算结果 都是
bool 类型值 - 若操作数不为
bool 类型值,会自动转bool 类型值
Q
赋值运算符有哪些?
+
| 运算符 | 名称 | 示例 | 等价形式 | 结果 |
|---|---|---|---|---|
= | 简单赋值 | x = 5 | - | x变为5 |
+= | 加赋值 | x += 3 | x = x + 3 | x增加3 |
-= | 减赋值 | x -= 2 | x = x - 2 | x减少2 |
*= | 乘赋值 | x *= 4 | x = x * 4 | x乘以4 |
/= | 除赋值 | x /= 2 | x = x / 2 | x除以2 |
%= | 模赋值 | x %= 3 | x = x % 3 | x取模3 |
重要特性
- 优先级:赋值运算符的优先级很低,仅高于逗号运算符
- 结合性:从右向左
- 返回值:返回被赋的值(可以链式赋值)
cpp
int a, b, c;
a = b = c = 10; // 所有变量都赋值为101
2
2
注意事项
- 左操作数必须是可修改的左值(变量)
- 复合赋值运算符比简单赋值更高效(只需计算一次左操作数)
- 不同类型赋值时会发生隐式类型转换
cpp
double d = 3.14;
int i = d; // 隐式转换为int,i=31
2
2
Q
什么是运算符优先级?
+
- 运算符优先级 决定了表达式中各个运算符的执行顺序。
- 当 表达式包含多个运算符 时,优先级高的运算符会先被计算。
- 优先级相同的运算符则根据 结合性(从左到右或从右到左)来决定计算顺序。
核心优先级(从高到低)
不确定时就用括号,既安全又清晰!
- 括号
(), 最高优先级 - 一元运算符
++--!+- - 乘除模
*/% - 加减
+- - 关系比较
<<=>>= - 相等比较
==!= - 逻辑与
&& - 逻辑或
|| - 赋值
=+=-=等, 最低优先级
括号优先,先乘除后加减,比较高于逻辑,赋值最后