Maison > développement back-end > C++ > Pourquoi « 0123 » est-il évalué à 83 en C/C ?

Pourquoi « 0123 » est-il évalué à 83 en C/C ?

Barbara Streisand
Libérer: 2024-11-18 10:13:02
original
803 Les gens l'ont consulté

Why does `0123` evaluate to 83 in C/C  ?

Préfixer les constantes numériques avec '0' dans C/C

Question :

Pourquoi une constante entière préfixée par « 0 » dans C/C est-elle évaluée à une valeur différente de celle attendue ? Par exemple, l'utilisation de la constante '0123' donne la valeur 83 au lieu de 123.

Réponse :

En C/C et dans d'autres langages de programmation, les constantes numériques peuvent être préfixé par différents préfixes pour indiquer la base numérique qu'ils représentent. Le préfixe « 0 » désigne une constante octale (base 8).

Lorsque le compilateur rencontre une constante numérique préfixée par « 0 », il interprète les chiffres qui la suivent comme un nombre octal. Dans le cas de '0123', il est traité comme (0 8^3) (1 8^2) (2 8^1) (3 8^0), ce qui est évalué à 83 en décimal.

Ceci est cohérent avec la spécification du langage C/C, qui stipule qu'une constante numérique commençant par « 0 » est traitée comme un nombre octal. Cette règle s'applique aux constantes entières et à virgule flottante.

Comprendre le rôle des préfixes numériques est crucial pour représenter et interpréter avec précision les données numériques dans les programmes C/C.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal