Basis van programmeren in C
int x = 5;
if (x = 0)
printf("zero ");
else
printf("nonzero ");
printf("%d\n", x);Wat is de uitvoer als de bovenstaande code, met = in de voorwaarde van een if-statement, wordt uitgevoerd?
- Azero 0
- Bnonzero 5
- Cnonzero 0
Antwoord en toelichting tonen
Antwoord: C. nonzero 0
x = 0 in de voorwaarde van de if is een toekenning, niet de vergelijking ==. x wordt 0 en ook de waarde van de toekenningsexpressie is 0, dus de voorwaarde is onwaar en „nonzero” uit de else-tak wordt afgedrukt. De printf daarna drukt x af, dat door de toekenning 0 is geworden. Met -Wall geeft gcc een waarschuwing voor deze schrijfwijze, dus wie waarschuwingen ingeschakeld houdt, merkt de fout gemakkelijker op.