Basis van programmeren in 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);

Wat is de uitvoer als het bovenstaande switch-statement, met een case zonder break, wordt uitgevoerd?

  1. A10
  2. B110
  3. C1110
Antwoord en toelichting tonen

Antwoord: B. 110

Een switch-statement springt naar het case-label dat bij de waarde van n past en voert vanaf daar ook de statements van de volgende cases uit tot het een break tegenkomt (fall-through). n is 2, dus de uitvoering begint bij case 2, en na c += 10 wordt ook c += 100 van case 3 uitgevoerd, waarna break de switch verlaat. c is 10 + 100 = 110. Als het doorlopen bedoeld is, maakt een vermelding daarvan in commentaar het gemakkelijk om het te onderscheiden van een vergeten break.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Basis van programmeren in C

  1. Wat is de uitvoer als het bovenstaande programma wordt uitgevoerd?
  2. Wat is de retourwaarde van de derde aanroep als de bovenstaande functie f drie keer achter elkaar wordt aangeroepen?
  3. 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?
  4. 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?
  5. 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?