Maison > développement back-end > C++ > Quelle est la principale différence entre les spécificateurs de format `%i` et `%d` dans `printf` et `scanf` en C ?

Quelle est la principale différence entre les spécificateurs de format `%i` et `%d` dans `printf` et `scanf` en C ?

Mary-Kate Olsen
Libérer: 2024-12-03 00:44:09
original
658 Les gens l'ont consulté

What's the Key Difference Between `%i` and `%d` Format Specifiers in C's `printf` and `scanf`?

Comprendre la différence entre les spécificateurs de format %i et %d

Lors de l'utilisation de fonctions d'entrée/sortie formatées telles que printf et scanf, les spécificateurs de format jouent un rôle crucial dans le contrôle du type de données à imprimer ou lire. Parmi ceux-ci, les spécificateurs %d (entier) et %i (entier) méritent un examen attentif.

Utilisation dans printf

Pour les opérations de sortie, il n'y a aucune différence fonctionnelle entre %d et %i. Les deux généreront un entier décimal signé. Par exemple, utiliser %d ou %i avec la valeur entière 100 donnerait la chaîne "100".

Utilisation dans scanf

Cependant, la distinction entre %d et %i deviennent évidents dans les opérations d'entrée. Alors que %d analyse strictement un entier décimal signé, %i prend en charge les formats décimal, hexadécimal et octal.

  • Décimal (par défaut) : %d et %i accepteront un séquence de chiffres décimaux (par exemple, 123, -45).
  • Hexadécimal : %i autorise la saisie au format hexadécimal s'il est préfixé par "0x" (par exemple, 0x123). D'un autre côté, %d traitera "0x" comme faisant partie de la chaîne entière.
  • Octal : De même, %i prend en charge la saisie octale si elle est préfixée par "0" (par exemple, 033 ). En revanche, %d interpréterait "033" comme un entier décimal.

Pour illustrer la différence, considérons l'exemple suivant :

scanf("%i", &number);
Copier après la connexion

Si l'utilisateur saisit "033" , %i l'interprétera comme un nombre octal et attribuera la valeur 27 à la variable 'number', alors que %d attribuerait 33.

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