Was bedeutet das folgende Codefragment (in C) drucken?
Frage
Was bedeutet das folgende Codefragment (in C) drucken?
int a = 033;
printf("%d", a + 1);
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