运算符
运算符 (Operator) 用于把一个或多个操作数 (Operand) 组合成一个表达式。
本章的关键点不在于“记住所有符号”,而在于掌握三件事:
- 每个运算符对操作数的类型要求;
- 运算符在求值时会发生的隐式转换;
- 运算符与副作用相关的求值顺序/序列规则。
1. 本节目录
- 4.1.1 算术运算符
- 4.1.2 逻辑运算符
- 4.1.3 赋值运算符
- 4.1.4 关系运算符
- 4.1.5 三元运算符
- 4.1.6 类型转换运算符
- 4.1.7 逗号运算符
- 4.1.8 sizeof
- 4.1.9 其他运算符
- 4.1.10 优先级 结合性
- 4.1.11 运算符宏
- 4.1.12 代用记号
2. 习题
#10411
⚡3⏳2
对下列表达式分别指出“主运算符”是什么(提示:考虑优先级与结合性),并写出等价的加括号版本:
a + b * ca && b || ca = b = ca ? b : c + d
#10412
⚡5⏳3
写出一个例子,说明“&& / || 的短路求值 (Short-circuit evaluation)”会影响副作用是否发生。
要求:给出输出或对象最终值的说明。
#10413
⚡6⏳4
找出下面代码的未定义行为,并改写为无 UB 的版本:
c
int i = 0;
int x = i++ + i;1
2
2