小编1la*_*ath的帖子

C中的其他形式的switch语句有哪些?

我正在阅读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
推荐指数
1
解决办法
928
查看次数

标签 统计

c ×1