ホームページ >バックエンド開発 >C++ >C の %i と %d: これらの形式指定子はどのような場合に異なりますか?

C の %i と %d: これらの形式指定子はどのような場合に異なりますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-03 13:37:12368ブラウズ

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

書式付き入出力関数 (printf / scanf) の書式指定子 %i と %d の違い

printf などのフォーマットされた I/O 関数scanf は変換指定子を利用して、入力または出力中にデータがどのように表現されるかを制御します。これらの指定子のうち、%i と %d は整数によく使用されます。

出力での使用法 (%i と %d)

次の形式指定子として使用される場合出力では、%i と %d の間に区別はありません。どちらも同じ結果を生成します。これらは 10 進形式の整数値を表します。

入力指定子

ただし、%i と %d を入力指定子として使用する場合 (scanf 内) に区別が現れます。 )。主な違いは次のとおりです。

  • %d: 符号付き 10 進整数を指定します。入力は 10 進数 (10 進数) であることが予期されます。
  • %i: デフォルトの動作は %d (符号付き 10 進整数) と似ています。ただし、追加の機能があります。

    • などの他の基数での入力が可能です。16 進数: "0x" が前に付くと、入力が 16 進数として解釈されます。
    • 8 進数: 先頭に「0」を付けると、入力が 8 進数として解釈されます。

実際の例

違いを説明するために、入力文字列 "033" を考えてみましょう。

  • %d 付き: 符号付き 10 進数として扱います
  • %i の場合: 入力は「0」で始まるため、8 進数として認識されます。 8 進数の "033" の値は 27 です。

要約すると、%i と %d は出力では同様に動作しますが、入力では動作が異なります。 %i は 16 進数と 8 進数の入力を許可することで拡張機能を提供しますが、%d は符号付き 10 進数の入力に厳密に制限されます。

以上がC の %i と %d: これらの形式指定子はどのような場合に異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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