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
Patricia Arquetteoriginal
2024-12-03 13:37:12375parcourir

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