我正在阅读 KN King 的A Modern Approach to C Programming,第 2 版。
它说,除了一般的 switch 语句(带有 case 关键字)之外,还有其他形式的 switch 语句。switch 语句的一般形式是
switch (exp)
{
case constant-exp:
statement;
break;
case constant-exp:
statement;
break;
...
...
default:
statement;
break;
}
它还说(在 Q&A 中)switch 语句可以有没有 case 关键字的形式。我尝试运行一个没有 case 关键字的示例,但它没有运行(在 std=-c99 下)。
所以,我想知道在标准 C99 中有效的其他形式的 switch 语句是什么。
编辑:引自书
在最常见的形式中,switch 语句具有以下形式
switch ( expression ) {
case constant-expression : statements
...
case constant-expression : statements
default : statements
}
问答
**问:为 switch 语句提供的模板将其描述为“最常见的形式”。还有其他形式吗?
A**:switch 语句比本章中描述的更通用,尽管这里给出的描述对于几乎所有程序来说都足够通用。例如,switch 语句可以包含前面没有单词 case 的标签,这会导致有趣的 (?) 陷阱。假设我们不小心误卖了 default 这个词:
switch(...) {
...
defualt: ...
}
编译器可能不会检测到错误,因为它假定defualt是一个普通标签。