Oggi mi sono imbattuto in un pezzo di codice del caso-switch e sono rimasto un po 'sorpreso nel vedere come funzionava. Il codice era:Il case-switch funziona così?
switch (blah)
{
case a:
break;
case b:
break;
case c:
case d:
case e:
{
/* code here */
}
break;
default :
return;
}
Con mia sorpresa nello scenario in cui la variabile è stata c
, il percorso è andato all'interno del segmento "qui il codice". Sono d'accordo che non vi è alcuna interruzione alla fine della parte c
dell'interruttore del caso, ma avrei immaginato che passasse invece da default
. Quando atterri su una linea case blah:
, non controlla se il tuo valore attuale corrisponde al caso specifico e solo allora ti lascia nel segmento specifico? Altrimenti qual è il punto di avere un caso?
: -Grazie per l'elaborata risposta! Ho capito come funziona. E 'solo che è contro ciò che il senso comune mi dice. Continuo a pensare che il comportamento sia contro-intuitivo. Ho fino ad oggi pensato che quei "casi (blah)" erano un po' come un assegno per assicurare se la tua variabile è davvero (blah) .. evidentemente non è così che funziona C! – Manish
@Manish: Switch viene spesso implementato con una "[tabella delle diramazioni] (http://en.wikipedia.org/wiki/Branch_table)", in modo che possa aiutare anche la tua comprensione. Il buon senso non esiste nella programmazione, BTW. Hai bisogno invece di "sensei del programmatore" :) –
@Manish Entrambi i comportamenti sono desiderabili, uno può avere default fall-through ed esplicitamente 'break' out, o breakout predefinito ed esplicitamente' continue' al caso successivo se lo si desidera. Da un punto di vista del buon senso, quest'ultimo può sembrare più naturale, ma con l'implementazione in mente, il fall-default è più naturale, quindi è stato scelto. –