Pourquoi les entiers sont-ils convertis en nombres octaux ici?

Je suis incapable de comprendre la sortie des programmes mentionnés ci-dessous

#include 

int main()
{
   int i, a[8]={000, 001, 010, 011, 100, 101, 110, 111};

for(i=0;i<8;i++)
{
   printf("%d\t",a[i]);             
}
system("pause");
return 0;

}


SORTIE -

0 1 8 9 100 101 110 111

Pourquoi les quatre valeurs initiales sont converties ici ???

0

2 Réponses

Tout littéral entier commençant par 0 suivi d'autres chiffres est octal, comme tout littéral entier commençant par 0x ou 0X , suivi de chiffres , est hexadécimal. C ++ 14 ajoutera 0b ou 0B comme préfixe pour les littéraux binaires entiers.

En savoir plus sur littéraux entiers en C ++ ici .

0
ajouté
+1 pour la spécification C ++ 14
ajouté l'auteur HariHaraSudhan, source

0xNumber est hexadécimal

0
ajouté
S'il vous plaît ajouter que 0x fera hex.
ajouté l'auteur Sorin, source