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?

  1. Azero 0
  2. Bnonzero 5
  3. 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.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Basis van programmeren in C

  1. De bovenstaande code is geschreven om te controleren of bit 2 van de registerwaarde reg 1 is. Wat is het resultaat als de code wordt uitgevoerd?
  2. uint8_t is een 8-bits integertype zonder teken. Wat is de uitvoer als de bovenstaande code wordt uitgevoerd?
  3. uint8_t is een 8-bits integertype zonder teken. Wat is de uitvoer als de bovenstaande code, die x tien keer verhoogt, wordt uitgevoerd?
  4. unsigned char is 8 bits en int is 32 bits. Wat is de uitvoer als de bovenstaande code wordt uitgevoerd?
  5. uint8_t is een 8-bits integertype zonder teken en int is 32 bits. Wat is het resultaat als de bovenstaande code wordt uitgevoerd?