2013-07-17 84 views
6

我看到一些C代碼: INT檢查= 10:C語言中這種switch case的語法是什麼意思?

switch(check) { 
      case 1...9: printf("It is 2 to 9");break; 
      case 10: printf("It is 10");break; 
} 

是什麼case 1...9:是什麼意思?它是否被禁止?

+0

謝謝你男人,我基本上可以猜出這是什麼意思,但我需要得到證實,並知道這是否是有標準的? – user2131316

+1

@ user2131316正如我在下面指出的,你可以使用'gcc -std = c99 -pedantic'來檢查特定的標準 –

回答

7

這是一個名爲的GNU C擴展,案例範圍爲

http://gcc.gnu.org/onlinedocs/gcc/Case-Ranges.html

正如文件中指出的那樣,你必須把範圍的低值和高值之間的空間。

case 1 ... 9: 
    statement; 

等同於:

case 1: 
case 2: 
case 3: 
case 4: 
case 5: 
case 6: 
case 7: 
case 8: 
case 9: 
    statement; 
+0

好的,謝謝,但是這個GNU C是標準C還是由C99支持? – user2131316

+0

據我所知,1 ... 9是一個語法錯誤,需要一個空格。 –

+0

@ user2131316 GNU C不是C.它是C. – ouah

1

這是gcc extension,以通常這出與gcc至少是使用-pedantic說法,他們最簡單的方法:

gcc -pedantic 

將發出警告:

warning: range expressions in switch statements are non-standard [-pedantic] 

,如果你想檢查針對特定的標準,例如c99,你做如下:

gcc -std=c99 -pedantic 

此外,這是不正確的:

case 1...9: 

您需要的點之間的空間和數字:

case 1 ... 9: 

document指出:

小心:在...周圍寫空格,否則在整數值中使用它時可能會解析錯誤。