在C规范中,case
和default
关键字在6.8.1节中指出
作为标记声明:
labeled-statement:
identifier : statement
**case** constant-expression : statement
**default** : statement
例如,{6.8}中指出了if
和switch
作为选择陈述:
selection-statement:
**if** ( expression ) statement
**if** ( expression ) statement **else** statement
**switch** ( expression ) statement
这些关键字都是用粗体编写的,所以乍一看我可以这么认为
case
,default
,if
,else
和switch
都被视为“陈述”。
然而,之后,写道:
If a switch statement has an associated case or default label within the scope of an
identifier with a variably modified type, the entire switch statement shall be within the
scope of that identifier
所以似乎case
和default
被视为“标签”,而不是“声明”。
我不明白哪个是正确的术语,或者case
和default
是语句或标签。
答案 0 :(得分:1)
很明显,我看不出有什么混乱。
C99 6.8.1 / 2
case
或default
标签只能出现在switch
声明中。
您只引用 6.8.1标记语句的标题。