ホームページ >バックエンド開発 >C++ >C の `printf` と `scanf` の書式指定子 `%i` と `%d` の主な違いは何ですか?

C の `printf` と `scanf` の書式指定子 `%i` と `%d` の主な違いは何ですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-03 00:44:09578ブラウズ

What's the Key Difference Between `%i` and `%d` Format Specifiers in C's `printf` and `scanf`?

書式指定子 %i と %d の違いを理解する

printf などの書式設定された入出力関数を使用する場合scanf の形式指定子は、制御において重要な役割を果たします。印刷または読み取りされるデータのタイプ。このうち、指定子 %d (整数) と %i (整数) は慎重に検討する必要があります。

printf での使用法

出力操作については、機能的な違いはありません。 %d と %i の間。どちらも符号付き 10 進整数を出力します。たとえば、%d または %i を整数値 100 で使用すると、文字列「100」になります。

scanf での使用法

ただし、 %d と %i は入力操作で明らかになります。 %d は符号付き 10 進整数を厳密にスキャンしますが、%i は 10 進数、16 進数、および 8 進数の形式をサポートします。

  • 10 進数 (デフォルト): %d と %i は両方とも、一連の 10 進数 (例: 123、 -45).
  • 16 進数: %i は、先頭に「0x」が付いている場合 (例: 0x123)、16 進数形式での入力を許可します。一方、%d は、「0x」を整数文字列の一部として扱います。
  • 8 進数: 同様に、%i は、接頭辞「0」が付いている場合 (例: 033) 8 進数入力をサポートします。 )。対照的に、%d は「033」を 10 進整数として解釈します。

違いを説明するために、次の例を考えてみましょう。

scanf("%i", &number);

ユーザーが「033」を入力した場合、%i はそれを 8 進数として解釈し、値 27 を変数 'number' に代入しますが、%d は値 27 を代入します。 33.

以上がC の `printf` と `scanf` の書式指定子 `%i` と `%d` の主な違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。