B39
语句块、逗号表达式与三目运算
引入
章前总览 分支里要写多条语句,用花括号组成语句块。也可用逗号把短表达式串起来“压行”。两边都给同一变量赋值时,还能写成条件运算符 ? :。
本节要点:
- 语句块:{ … }
- 逗号表达式:值取最后一个
- 三目运算:条件 ? 真值 : 假值
1 C1. 语句块(复合语句)
if / else 后面默认只管一条语句。多条必须用 {} 包起来。
补充说明
不推荐
if (s <= q)
cout << "Yes" << endl;
cout << q - s << endl; // 总会执行!
问题:第二行不属于 if,逻辑错了。
推荐写法
if (s <= q) {
cout << "Yes" << endl;
cout << q - s << endl;
}
优点:两行同进退。
2 C2. 逗号运算符与逗号表达式
逗号把多个表达式按顺序求值,整个表达式的值等于最后一个。优先级最低。
压行写法示例
if (条件)
表达式1, 表达式2, 表达式3;
else
表达式4, 表达式5;
// 例:cout << (2, 3, "23"); 输出 23(只要最后一个)
break/continue/return不能写在逗号表达式里。- 初学优先用花括号,更清晰;考题可能考“只输出最后一个”。
3 C3. 条件运算符 ?: (三目)
当 if/else 两边都是给同一变量赋值时,可改写成条件表达式。
写法
// 等价写法
if (a > b) mx = a;
else mx = b;
mx = (a > b) ? a : b; // 条件为真取 a,否则取 b
- 形式:
表达式1 ? 表达式2 : 表达式3。 - 先算表达式1:非 0 则取表达式2,否则取表达式3。
- 这是 C/C++ 唯一的三目运算符;优先于赋值。
4 C4. 关键字小提示
关键字(保留字)有特殊含义,如 int、if、else、for、do。不要当变量名。
常考辨析
cout、cin、endl是标准库里的名字,不是关键字。- IDE 里关键字常有特殊颜色;颜色不对可能拼错了。
小结
三条口诀:
多语句 → 花括号
逗号表达式 → 只要最后一个值
mx = (a>b) ? a : b;
✓
里程碑达成:
下一节练习:当天第几秒、水仙花数、开尔文温度转换。