Maison > développement back-end > C++ > le corps du texte

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

Barbara Streisand
Libérer: 2024-11-18 10:13:02
original
708 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!

source:php.cn
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