运算符与表达式
概念讲解
算术运算符
| 运算符 | 说明 | 示例 |
|---|---|---|
| + | 加法 | a + b |
| - | 减法 | a - b |
| * | 乘法 | a * b |
| / | 除法 | a / b |
| % | 取模 | a % b |
关系运算符
| 运算符 | 说明 | 示例 |
|---|---|---|
| == | 等于 | a == b |
| != | 不等于 | a != b |
| > | 大于 | a > b |
| < | 小于 | a < b |
| >= | 大于等于 | a >= b |
| <= | 小于等于 | a <= b |
逻辑运算符
| 运算符 | 说明 | 示例 |
|---|---|---|
| && | 逻辑与 | a && b |
| || | 逻辑或 | a || b |
| ! | 逻辑非 | !a |
赋值运算符
| 运算符 | 说明 | 示例 |
|---|---|---|
| = | 赋值 | a = b |
| += | 加赋值 | a += b |
| -= | 减赋值 | a -= b |
| *= | 乘赋值 | a *= b |
| /= | 除赋值 | a /= b |
| %= | 取模赋值 | a %= b |
运算符优先级
| 优先级 | 运算符 | 说明 |
|---|---|---|
| 1 | () | 括号 |
| 2 | !, ++, -- | 单目运算符 |
| 3 | *, /, % | 乘除模 |
| 4 | +, - | 加减 |
| 5 | <, <=, >, >= | 关系 |
| 6 | ==, != | 相等 |
| 7 | && | 逻辑与 |
| 8 | || | 逻辑或 |
| 9 | =, +=, -=, ... | 赋值 |
考点分析
初赛考查方式
- 选择题: 运算符优先级
- 程序阅读: 表达式求值
- 填空题: 运算结果
常见题型
- 运算符优先级
- 表达式求值
- 短路求值
例题精讲
例题 1:运算符优先级
题目: 2 + 3 * 4 的值是多少?
解答:
先乘后加
3 * 4 = 12
2 + 12 = 14例题 2:短路求值
题目: 以下代码的输出是什么?
123456int a = 0;
int b = 1;
if (a && (b = 2)) {
// 不会执行
}
cout << b;解答:
a 为 false,短路求值
(b = 2) 不会执行
b 仍然为 1练习题
- 10 / 3 的值是多少?
查看答案
3
整数除法会截断小数部分,只保留整数部分。
- 10 % 3 的值是多少?
查看答案
1
取模运算返回除法的余数:
- 以下代码的输出是什么?
123int a = 5;
int b = a++ + ++a;
cout << b;查看答案
未定义行为(不同编译器结果可能不同)
a++ 和 ++a 在同一个表达式中修改同一个变量,这是未定义行为。
常见结果可能是 11 或 12,但不能依赖这个结果。
易错点
⚠️ 注意:
- == 是比较,= 是赋值
- 整数除法会截断
- 注意运算符优先级
- 注意短路求值