2010-12-07 44 views
3

Qu'est-ce que le fragment de code suivant (en C) imprime?Qu'est-ce que le fragment de code suivant (en C) imprime?

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

Je pense que vous connaissiez la réponse –

+1

Avez-vous essayé vous-même? C'est généralement le meilleur moyen de le savoir. Demander * pourquoi * est une question différente. –

+0

merci Cody, j'avais juste besoin d'une "réponse rapide". Merci pour toutes vos réponses. – Lucas

Répondre

6

033 est un entier octal littéral et sa valeur est 8*3+3 = 27. Votre code affiche 28.

Un littéral entier commençant par 0 est octal. Si cela commence par 0x c'est hexadécimal.

Par ailleurs, pour un exemple à cause de

int x = 08; //error 

est une erreur de compilation depuis 8 n'est pas un chiffre octal.

+0

merci beaucoup Armen – Lucas

0

je risquerais une conjecture sauvage et dire 28 :)

+0

merci mingos et darioo. Je voudrais savoir comment fermer ce post – Lucas

0

28.

033 est un nombre octal en C, car il a un principal « 0 », ce qui signifie que sa valeur est 27 en décimal.

Ainsi, 27 + 1 = 28

0

est ici un indice:

  • un 3 chiffres avec zéro au début est un octal.
  • une valeur à 2 chiffres avec "0x" au début est un hex.

Essayez de regarder cet exemple:

#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); 
} 

cela se traduit par:

in decimal: 28 
in hex: 1c 
in octal: 34