Grundlagen der Programmiersprache C

int f(void) {
    static int s = 0;
    int a = 0;
    s++;
    a++;
    return s * 10 + a;
}

Die obige Funktion f wird dreimal hintereinander aufgerufen. Welcher Rückgabewert ergibt sich beim dritten Aufruf?

  1. A11
  2. B13
  3. C31
Antwort und Erläuterung anzeigen

Antwort: C. 31

Die mit static versehene lokale Variable s wird vor dem Programmstart einmal mit 0 initialisiert und behält ihren Wert auch nach der Rückkehr aus der Funktion. Deshalb steigt s mit jedem Aufruf auf 1, 2 und 3. Die Variable a ohne static wird bei jedem Aufruf neu angelegt und beginnt bei 0, ist also jedes Mal 1. Der Rückgabewert beim dritten Aufruf ist 3 × 10 + 1 = 31.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen der Programmiersprache C

  1. 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?
  2. 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?
  3. 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?
  4. int habe 4 Byte und ein Zeiger 8 Byte. Welche Ausgabe erzeugt das obige Programm bei der Ausführung?
  5. int habe 4 Byte. Welche Ausgabe erzeugt der obige Code bei der Ausführung?