Frage

Was bedeutet das folgende Codefragment (in C) drucken?

int a = 033;
printf("%d", a + 1);
War es hilfreich?

Lösung

033 ist ein Oktal Ganzzahlliteral und sein Wert 8*3+3 = 27 ist. Der Code druckt 28.

Ein Ganzzahlliteral dass beginnt mit einem 0 ist Oktal. Wenn es beginnt in 0x es ist hexadezimal.

Durch die Art und Weise, für ein Beispiel willen

int x = 08; //error

ist ein Fehler bei der Kompilierung seit 8 kein Oktalziffer ist.

Andere Tipps

Ich würde eine wilde Vermutung und sagen 28 riskieren:)

28.

033 ist eine Oktalzahl in C, weil es einen führenden „0“ hat, und das bedeutet, sein Wert 27 in dezimaler ist.

So, 27 + 1 = 28

ist hier ein Stichwort:

  • eine 3-stellige mit Null am Anfang ist ein Oktal.
  • ein 2-stellige Wert mit "0x" am Anfang ist ein hex.

Versuchen Sie, bei diesem Beispiel suchen:

 #include<stdio.h>
 main()
 {
 int a = 033;
 printf("\nin decimal: %d", a+1);
 printf("\nin hex: %x", a+1);
 printf("\nin octal: %o", a+1);
 }

Dies ergibt:

in decimal: 28
in hex: 1c
in octal: 34
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top