En affichant la valeur de la variable “int a = 011”, je reçois 9. Pourquoi?

Avec cet extrait de code:

int a = 011; printf("a = %d", a); 

Pourquoi le résultat

a = 9

    011 est une valeur octale et son équivalent décimal est 9. Le littéral entier précédent avec 0 indique une valeur octale.
    Utilisez le spécificateur %o dans printf pour imprimer la valeur en octal.

    Un 0 , dans une constante int ou une constante int , représente la valeur octale . Cela s’appelle une constante octale.

    Connexe: norme C11 , chapitre 6.4.4.1, Constantes de nombre entier , paragraphe 3,

    Une constante octale est constituée du préfixe 0 éventuellement suivi d’une séquence des chiffres de 0 à 7 uniquement.

    Avec 0 au début d’un littéral numérique, vous spécifiez le système octal. Et 11 dans le système octal est 1*8 + 1 = 9 .