2010-12-07 7 views
3

Wie wird das folgende Codefragment (in C) gedruckt?Wie wird das folgende Codefragment (in C) gedruckt?

int a = 033; 
printf("%d", a + 1); 
+0

ich glaube, Sie kannte die Antwort –

+1

Sie es selbst ausprobiert? Das ist normalerweise der beste Weg, das herauszufinden. Fragen * warum * ist eine andere Sache. –

+0

danke Cody, ich brauchte nur eine "schnelle Antwort". Danke für alle Antworten. – Lucas

Antwort

6

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

Ein Ganzzahlliteral, das mit 0 beginnt, ist oktal. Wenn es in 0x beginnt, ist es hexadezimal.

By the way, für ein willen Beispiel

int x = 08; //error 

ist ein Fehler Compile-Zeit seit 8 kein Oktalziffer ist.

+0

vielen Dank Armen – Lucas

0

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

+0

Danke Mingos und Darioo. Ich würde gerne wissen, wie man diesen Beitrag schließt – Lucas

0

28.

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

So, 27 + 1 = 28

0

hier ein Stichwort:

  • eine 3-stellige mit Null am Anfang ein Oktal ist.
  • ein 2-stelliger 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