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