2013-07-17 20 views
6

Ho visto qualche codice C come questo: int controllo = 10:cosa significa in C questa sintassi dell'interruttore?

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

che cosa questo significa case 1...9:? è standard?

+0

grazie amico, fondamentalmente posso indovinare cosa significa questo, ma ho bisogno di essere confermato e sapere se questo è standard? – user2131316

+1

@ user2131316 Come ho notato di seguito puoi usare 'gcc -std = c99 -pedantic' per controllare uno standard specifico –

risposta

7

È un'estensione GNU C denominata intervallo di casi.

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

Come notato nel documento, è necessario inserire spazi tra il valore basso e alto di gamma.

case 1 ... 9: 
    statement; 

è equivalente a:

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

ok, grazie, ma questo GNU C è standard C o è supportato da C99 o cosa? – user2131316

+0

Per quanto ne so, '1 ... 9' è un errore di sintassi, deve esserci uno spazio. –

+0

@ user2131316 GNU C non è C. È un'estensione a C. – ouah

1

Questo è gcc extension, essi modo più semplice per calcolare solitamente questo con gcc almeno consiste nell'utilizzare -pedantic argomento:

gcc -pedantic 

vi avviserà:

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

e se si voleva controllare contro una norma specifica, ad esempio c99, fate come segue:

gcc -std=c99 -pedantic 

Inoltre, questo non è corretto:

case 1...9: 

è necessario spazi tra i punti e numeri:

case 1 ... 9: 

come rilevato nella document:

Attenzione: scrivere spazi attorno a ..., altrimenti potrebbe essere analizzato erroneamente quando lo si utilizza con valori interi.

Problemi correlati