我正在阅读KN King的C编程现代方法,第2版.
它说,除了一般的switch语句(带case关键字)之外,还有其他形式的switch语句.switch语句的一般形式是
switch (exp)
{
case constant-exp:
statement;
break;
case constant-exp:
statement;
break;
...
...
default:
statement;
break;
}
Run Code Online (Sandbox Code Playgroud)
它还说(在Q&A中)switch语句可以具有不带case关键字的形式.我尝试运行没有case关键字的示例,但它没有运行(在std = -c99下).
所以,我想知道在标准C99中有哪些其他形式的switch语句.
编辑:引用来自BOOK
在它最常见的形式中,switch语句具有表单
switch ( expression ) {
case constant-expression : statements
...
case constant-expression : statements
default : statements
}
Run Code Online (Sandbox Code Playgroud)
Q&A
**问:为switch语句提供的模板将其描述为"最常见的形式".还有其他形式吗?
A**:switch语句比本章中描述的更为通用,尽管这里给出的描述对于几乎所有程序都是足够通用的.例如,switch语句可以包含前面没有单词case的标签,这会导致有趣的(?)陷阱.假设我们意外地错误地单词默认:
switch(...) {
...
defualt: ...
}
Run Code Online (Sandbox Code Playgroud)
编译器可能无法检测到错误,因为它假定defualt是普通标签.
c ×1