Pourquoi la sortie printf de la variable est différente

Je ne pouvais pas savoir pourquoi cela se produit! Voulez-vous connaître la raison.

{ int i=01; printf("%d\n",i); } output: 1 

mais

 { int i=011; printf("%d\n",i); } output: 9 

Est-ce que quelqu’un a la réponse?

011 = octal, (1 * 8) + 1 = 9 ……………………

011 est une constante octale. 11 (b8) = 9 (b10) .

C11 (n1570), § 6.4.4.1 Constantes de nombre entier
Une constante octale est constituée du préfixe 0 éventuellement suivi d’une séquence des chiffres de 0 à 7 uniquement.

 The numbers which are preceded by 0 is called octal numbers in c programming . to evaluate such an expression we simply follow a conversion rule of converting octal to decimal number system For conversion the following steps are to be proceed such as 011 here 0 indicate the number is octal and we are require to convert 11 which is (base 8) to decimal (base 10) 11= 1x8^1+1x8^0 =8+1 =9