Maison > développement back-end > C++ > Quelle est la principale différence entre `%i` et `%d` dans les fonctions d'entrée/sortie formatées en C ?

Quelle est la principale différence entre `%i` et `%d` dans les fonctions d'entrée/sortie formatées en C ?

Mary-Kate Olsen
Libérer: 2024-12-18 13:45:16
original
540 Les gens l'ont consulté

What's the Key Difference Between `%i` and `%d` in C's Formatted Input/Output Functions?

Comprendre les nuances des spécificateurs de conversion : %i contre %d dans les fonctions d'E/S formatées

Dans le domaine des entrées/sorties formatées ( IO) comme printf et scanf, les spécificateurs de conversion jouent un rôle central dans le guidage du format d'entrée ou de sortie. Parmi ces spécificateurs, %i et %d soulèvent souvent des questions sur leurs similitudes et leurs différences.

Sortie : une présence uniforme

Lorsqu'ils sont utilisés pour des opérations de sortie, comme avec printf, %i et %d se comportent de manière identique. Ils représentent systématiquement des entiers au format décimal. Par exemple, l'extrait de code suivant montre leur sortie identique :

int num = 123;
printf("Decimal representation (%%d): %d\n", num);
printf("Decimal representation (%%i): %i\n", num);
Copier après la connexion

Entrée : comportements distinctifs

Cependant, lorsqu'il est déployé dans des opérations d'entrée avec scanf ou des fonctions similaires, %i et %d présentent des différences marquées. %d analyse exclusivement les entiers sous forme de nombres décimaux signés. En revanche, %i conserve son interprétation décimale mais inclut également les entrées hexadécimales (préfixées par 0x) et octales (préfixées par 0).

Pour illustrer cette distinction, considérons l'exemple suivant :

int num;
scanf("%%d", &num); // Only accepts decimal input
scanf("%%i", &num); // Accepts decimal, hexadecimal, or octal input
Copier après la connexion

Si l'utilisateur saisit 033, scanf l'interprétera comme 27 avec %i (puisqu'il le traite comme octal) et 33 avec %d (strictement décimal).

En résumé...

Bien que %i et %d partagent des objectifs similaires dans les IO formatées, leur distinction réside dans leur comportement lors des opérations de saisie. %d se limite à la saisie décimale signée, tandis que %i gère de manière transparente les formats décimaux et autres formats de base (hexadécimal et octal). Cette compréhension est cruciale pour adapter les opérations de saisie aux besoins spécifiques de votre programme.

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