Heim >Backend-Entwicklung >C++ >%i vs. %d in C: Wann unterscheiden sich diese Formatspezifizierer?

%i vs. %d in C: Wann unterscheiden sich diese Formatspezifizierer?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-03 13:37:12436Durchsuche

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

Unterschiede zwischen den Formatspezifizierern %i und %d in formatierten E/A-Funktionen (printf / scanf)

Formatierte E/A-Funktionen wie printf und scanf verwendet Konvertierungsspezifizierer, um zu steuern, wie Daten während der Eingabe oder Ausgabe dargestellt werden. Unter diesen Spezifizierern werden %i und %d häufig für Ganzzahlen verwendet.

Verwendung für die Ausgabe (%i vs. %d)

Bei Verwendung als Formatspezifizierer für Ausgabe gibt es keinen Unterschied zwischen %i und %d. Beide führen zum gleichen Ergebnis. Sie stellen einen ganzzahligen Wert im Dezimalformat dar.

Eingabespezifizierer

Der Unterschied ergibt sich jedoch, wenn %i und %d als Eingabespezifizierer verwendet werden (in scanf ). Hier liegt der Hauptunterschied:

  • %d: Gibt eine vorzeichenbehaftete Dezimalzahl an. Es wird erwartet, dass die Eingabe eine Zahl zur Basis 10 (Dezimalzahl) ist.
  • %i: Das Standardverhalten ähnelt %d (vorzeichenbehaftete Dezimalzahl). Es verfügt jedoch über eine zusätzliche Funktion: Es ermöglicht die Eingabe in anderen Basen, wie zum Beispiel:

    • Hexadezimal: Mit dem vorangestellten „0x“ interpretiert es die Eingabe als Hexadezimalzahl.
    • Oktal: Mit der vorangestellten „0“ wird die Eingabe als Oktal interpretiert Nummer.

Praktisches Beispiel

Um den Unterschied zu veranschaulichen, betrachten Sie die Eingabezeichenfolge „033“.

  • Mit %d: Es wird als vorzeichenbehaftete Dezimalzahl behandelt, was den Wert ergibt 33.
  • Mit %i: Da die Eingabe mit „0“ beginnt, wird sie als Oktalzahl erkannt. Der Wert von „033“ im Oktalformat ist 27.

Zusammenfassend lässt sich sagen, dass sich %i und %d bei der Ausgabe zwar ähnlich verhalten, sich aber in ihrem Verhalten bei der Eingabe unterscheiden. %i bietet erweiterte Funktionalität, indem es hexadezimale und oktale Eingaben ermöglicht, während %d strikt auf vorzeichenbehaftete Dezimaleingaben beschränkt ist.

Das obige ist der detaillierte Inhalt von%i vs. %d in C: Wann unterscheiden sich diese Formatspezifizierer?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn