Grundlagen der Programmiersprache C

int x = 5;
if (x = 0)
    printf("zero ");
else
    printf("nonzero ");
printf("%d\n", x);

Welche Ausgabe erzeugt der obige Code, in dessen if-Bedingung = steht, bei der Ausführung?

  1. Azero 0
  2. Bnonzero 5
  3. Cnonzero 0
Antwort und Erläuterung anzeigen

Antwort: C. nonzero 0

Das x = 0 in der if-Bedingung ist kein Vergleich mit ==, sondern eine Zuweisung. x erhält 0, und auch der Wert des Zuweisungsausdrucks ist 0; die Bedingung gilt daher als falsch, und der else-Zweig gibt „nonzero“ aus. Das folgende printf gibt x aus, das durch die Zuweisung 0 geworden ist. gcc warnt mit -Wall vor dieser Schreibweise; mit aktivierten Warnungen fällt der Fehler daher leichter auf.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen der Programmiersprache C

  1. Der obige Code soll prüfen, ob Bit 2 des Registerwerts reg gleich 1 ist. Was ergibt die Ausführung?
  2. uint8_t ist ein vorzeichenloser 8-Bit-Ganzzahltyp. Welche Ausgabe erzeugt der obige Code bei der Ausführung?
  3. uint8_t ist ein vorzeichenloser 8-Bit-Ganzzahltyp. Welche Ausgabe erzeugt der obige Code, der x zehnmal erhöht, bei der Ausführung?
  4. unsigned char habe 8 Bit und int 32 Bit. Welche Ausgabe erzeugt der obige Code bei der Ausführung?
  5. uint8_t sei ein vorzeichenloser 8-Bit-Ganzzahltyp und int habe 32 Bit. Was ergibt die Ausführung des obigen Codes?