Grundlagen der Programmiersprache C

int n = 2, c = 0;
switch (n) {
case 1: c += 1;
case 2: c += 10;
case 3: c += 100; break;
default: c += 1000;
}
printf("%d\n", c);

Welche Ausgabe erzeugt die obige switch-Anweisung, die ein case ohne break enthält, bei der Ausführung?

  1. A10
  2. B110
  3. C1110
Antwort und Erläuterung anzeigen

Antwort: B. 110

Eine switch-Anweisung springt zur case-Marke, die zum Wert von n passt, und führt von dort aus auch die Anweisungen der folgenden case-Marken aus, bis sie auf ein break trifft (Fall-through). n ist 2, daher beginnt die Ausführung bei case 2; nach c += 10 wird auch c += 100 von case 3 ausgeführt, und break verlässt die switch-Anweisung. c ist 10 + 100 = 110. Ist das Weiterlaufen beabsichtigt, hilft ein Kommentar, es von einem vergessenen break zu unterscheiden.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen der Programmiersprache C

  1. Welche Ausgabe erzeugt das obige Programm bei der Ausführung?
  2. Die obige Funktion f wird dreimal hintereinander aufgerufen. Welcher Rückgabewert ergibt sich beim dritten Aufruf?
  3. Welche Kombination gibt in C die Zeitspanne (Lebensdauer) richtig an, in der (1) eine in einer Funktion ohne static deklarierte lokale Variable, (2) ein mit malloc reservierter Bereich und (3) eine außerhalb von Funktionen deklarierte Variable existieren?
  4. int habe 32 Bit (Maximalwert 2147483647). Was ist das größte n, für das die obige Funktion fact(n) die Fakultät von n ohne Überlauf korrekt zurückgibt?
  5. int habe 4 Byte und ein Zeiger 8 Byte. Ein Zeiger p auf int hat den Wert (die Adresse) 0x1000. Welchen Wert hat p + 3?