Maison > développement back-end > C++ > %i contre %d en C : quand ces spécificateurs de format diffèrent-ils ?

%i contre %d en C : quand ces spécificateurs de format diffèrent-ils ?

Patricia Arquette
Libérer: 2024-12-03 13:37:12
original
506 Les gens l'ont consulté

%i vs. %d in C: When Do These Format Specifiers Differ?

Différences entre les spécificateurs de format %i et %d dans les fonctions d'E/S formatées (printf / scanf)

Fonctions d'E/S formatées comme printf et scanf utilise des spécificateurs de conversion pour contrôler la manière dont les données sont représentées lors de l'entrée ou de la sortie. Parmi ces spécificateurs, %i et %d sont couramment utilisés pour les entiers.

Utilisation pour la sortie (%i contre %d)

Lorsqu'ils sont utilisés comme spécificateurs de format pour sortie, il n'y a aucune distinction entre %i et %d. Les deux produisent le même résultat. Ils représentent une valeur entière au format décimal.

Spécificateurs d'entrée

Cependant, la distinction apparaît lors de l'utilisation de %i et %d comme spécificateurs d'entrée (dans scanf ). Voici où réside la principale différence :

  • %d : Spécifie un entier décimal signé. Il s'attend à ce que l'entrée soit un nombre en base 10 (décimal).
  • %i : le comportement par défaut est similaire à %d (entier décimal signé). Cependant, il possède une fonctionnalité supplémentaire : il permet la saisie dans d'autres bases, telles que :

    • Hexadécimal : Précédé de "0x", il interprète la saisie comme un nombre hexadécimal.
    • Octal : Précédé de "0", il interprète l'entrée comme un octal numéro.

Exemple pratique

Pour illustrer la différence, considérons la chaîne d'entrée "033".

  • Avec %d : Il le traite comme un entier décimal signé, ce qui donne la valeur 33.
  • Avec %i : Puisque l'entrée commence par "0", il la reconnaît comme un nombre octal. La valeur de "033" en octal est 27.

En résumé, alors que %i et %d se comportent de la même manière pour la sortie, ils diffèrent dans leur comportement pour l'entrée. %i fournit des fonctionnalités étendues en autorisant la saisie hexadécimale et octale, tandis que %d est strictement limité à la saisie décimale signée.

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