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
Mary-Kate Olsenoriginal
2024-12-03 00:44:09578parcourir

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);

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:
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