9.9. 循环和开关选择语句

总述

switch 语句可以使用大括号分段, 以表明 cases 之间不是连在一起的. 在单语句循环里, 括号可用可不用. 空循环体应使用 {}continue.

说明

switch 语句中的 case 块可以使用大括号也可以不用, 取决于你的个人喜好. 如果用的话, 要按照下文所述的方法.

如果有不满足 case 条件的枚举值, switch 应该总是包含一个 default 匹配 (如果有输入值没有 case 去处理, 编译器将给出 warning). 如果 default 应该永远执行不到, 简单的加条 assert:

  1. switch (var) {
  2. case 0: { // 2 空格缩进
  3. ... // 4 空格缩进
  4. break;
  5. }
  6. case 1: {
  7. ...
  8. break;
  9. }
  10. default: {
  11. assert(false);
  12. }
  13. }

在单语句循环里, 括号可用可不用:

  1. for (int i = 0; i < kSomeNumber; ++i)
  2. printf("I love you\n");
  3.  
  4. for (int i = 0; i < kSomeNumber; ++i) {
  5. printf("I take it back\n");
  6. }

空循环体应使用 {}continue, 而不是一个简单的分号.

  1. while (condition) {
  2. // 反复循环直到条件失效.
  3. }
  4. for (int i = 0; i < kSomeNumber; ++i) {} // 可 - 空循环体.
  5. while (condition) continue; // 可 - contunue 表明没有逻辑.
  1. while (condition); // 差 - 看起来仅仅只是 while/loop 的部分之一.