Basis van programmeren in C

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

Wat is de retourwaarde van de derde aanroep als de bovenstaande functie f drie keer achter elkaar wordt aangeroepen?

  1. A11
  2. B13
  3. C31
Antwoord en toelichting tonen

Antwoord: C. 31

De lokale variabele s met static wordt maar één keer, vóór de start van het programma, op 0 geïnitialiseerd en behoudt haar waarde nadat de functie is teruggekeerd. Daarom neemt s bij elke aanroep toe tot 1, 2 en 3. a, zonder static, wordt bij elke aanroep opnieuw aangemaakt en begint bij 0, dus die is elke keer 1. De retourwaarde van de derde aanroep is 3 × 10 + 1 = 31.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Basis van programmeren in C

  1. Welke combinatie van de levensduur van (1) een lokale variabele die binnen een functie zonder static is gedeclareerd, (2) een met malloc gereserveerd gebied en (3) een variabele die buiten elke functie is gedeclareerd, is in C juist?
  2. int is 32 bits (maximum 2147483647). Wat is de grootste n waarvoor de bovenstaande functie fact(n) de faculteit van n correct en zonder overloop teruggeeft?
  3. int is 4 bytes en een pointer is 8 bytes. Als de waarde (het adres) van een pointer p naar int 0x1000 is, wat is dan de waarde van p + 3?
  4. int is 4 bytes en een pointer is 8 bytes. Wat is de uitvoer als het bovenstaande programma wordt uitgevoerd?
  5. int is 4 bytes. Wat is de uitvoer als de bovenstaande code wordt uitgevoerd?