Maison >développement back-end >C++ >Pourquoi les zéros non significatifs modifient-ils les valeurs entières en C ?
Dévoilement de l'énigme des zéros non significatifs dans les entiers
Le comportement que vous avez observé dans Visual Studio 2013 est le reflet des règles de représentation des entiers dans différentes bases, notamment décimales, octales et hexadécimales.
Un un littéral entier en C peut commencer par zéro pour représenter différentes bases :
Dans votre exemple :
Les erreurs du compilateur lors de la tentative d'attribution de 08 sont dues au fait que 8 n'est pas un chiffre octal valide. Il n'est valable que jusqu'à 7.
La raison de la conversion de 00016 en 14 est que les zéros non significatifs d'un littéral octal indiquent que le nombre est en base 8. Le compilateur effectue la conversion en multipliant chaque chiffre par sa puissance correspondante de 8, en commençant de droite à gauche.
Pour 00016, cela se traduit par :
0 * 8^4 0 * 8^3 0 * 8^2 1 * 8^1 6 * 8^0 = 14
Par conséquent, le comportement que vous avez observé est le résultat de l'interprétation par le compilateur des valeurs numériques basées sur leurs premiers chiffres et les règles des différentes bases en 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!