Hier ist ein Beispiel für eine switch
Anweisung. Ich verstehe nicht, warum es so funktioniert:Warum kann ich einen Fall in einen anderen Fall in einer switch-Anweisung einfügen?
int main(){
int number1 = 100, number2 = 200;
switch(number1){
case 100:{
cout << " outer switch number is: " << number1 << endl;
case 200:{ // any value other than 100
cout << "inner switch number is: " << number2 << endl;
}
break;
}
break;
}
return 0;
}
Das obige Programm druckt:
100
und druckt dann die nächste Anweisung voncase 200
. Wenn im zweiten Fall ein anderer Wert als200
verwendet wird, wird er weiterhin ausgeführt. Ich weiß, dass es keinebreak
nachcase 100
gibt. Aber warum bekomme ich stattdessen einen Kompilierungsfehler?Um klarer zu sein, warum wird auch ein anderer Wert innerhalb des inneren Falles erfolgreich sein? Z. B.
case 70000:
Ein Schalter/Gehäuse ist so ziemlich ein berechneter Wert goto/label, mit einigen zusätzlichen Einschränkungen. – Eljay
gibt es keine 'break'-Anweisung zwischen' case 100' und 'case 200', daher passiert der Fall durch. –
['switch' hat viel unangenehmere Dinge, als irgendjemand jemals denken würde] (http://blog.robertelder.org/switch-statements-statement-expressions/). –