Question

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

int a = 033;
printf("%d", a + 1);
Était-ce utile?

La solution

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

Un littéral entier qui commence par un 0 est octal. Si elle commence à 0x il de hexadécimal.

Par ailleurs, pour l'amour d'un exemple

int x = 08; //error

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

Autres conseils

Je risque une supposition sauvage et dire 28:)

28.

033 est un nombre octal en C, car il a un principal « 0 » et que des moyens sa valeur est 27 en décimal.

, 27 + 1 = 28

voici 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 hexagone.

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

Le résultat:

in decimal: 28
in hex: 1c
in octal: 34
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top