2014-06-16 62 views
1

在C規範casedefault關鍵字以一節所述6.8.1 作爲標記語句:是大小寫還是默認考慮語句?

labeled-statement: 
identifier : statement 
**case** constant-expression : statement 
**default** : statement 

像,例如,ifswitch在部分被指示6.8.4 作爲選擇語句:

selection-statement: 
**if** (expression) statement 
**if** (expression) statement **else** statement 
**switch** (expression) statement 

這些關鍵字都寫在大膽所以第一眼,我可以假設 casedefaultif,elseswitch都被認爲是「聲明」。

然而,之後,寫的是:

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 

如此看來,casedefault被視爲「標籤」而不是「聲明」。

我不明白哪一個是正確的術語,或者casedefault是語句或標籤。

+0

他們是根據MS聲明,[這裏](http://msdn.microsoft.com/en-us/library/66k51h7a.aspx) – Yann

+1

@Yann在談論關於C標準的MS是完全無關的。 MS不知道或關心標準。 – Lundin

+1

我沒有看到這個問題的問題。這很簡單,詢問'case'和'default'是否是語句或標籤。雖然它似乎是一個簡單的規範誤讀('case expression:'是一個標籤,而整個'case expression:statement'是一個帶標籤的語句),它似乎是一個有效的編程問題,並帶有明確的答案。 – tvanfosson

回答

1

這很清楚,我看不出有什麼困惑。

C99 6.8.1/2

一個casedefault標籤應僅在一個switch聲明出現。

您引用的僅僅是標題6.8.1標記語句

+0

我更清楚地重寫我的問題,我希望...如果你可以再讀一遍,謝謝。 – xdevel2000

相關問題