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?
- A11
- B13
- 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.