测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看
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. 关键字小提示

关键字(保留字)有特殊含义,如 intifelsefordo。不要当变量名。

常考辨析

  • coutcinendl 是标准库里的名字,不是关键字。
  • IDE 里关键字常有特殊颜色;颜色不对可能拼错了。
小结

三条口诀:

多语句 → 花括号
逗号表达式 → 只要最后一个值
mx = (a>b) ? a : b;
里程碑达成:

下一节练习:当天第几秒、水仙花数、开尔文温度转换。