変換指定子のニュアンスを理解する: 書式付き IO 関数における %i と %d の比較
書式付き入出力の領域 ( IO) printf や scanf などの関数、変換指定子は入力形式をガイドする上で重要な役割を果たします。または出力します。これらの指定子の中で、%i と %d は、その類似点と相違点についてよく疑問を引き起こします。
出力: 均一な存在
などの出力操作に使用される場合printf では、%i と %d はどちらも同じように動作します。これらは一貫して 10 進数形式で整数を表します。たとえば、次のコード スニペットは同一の出力を示しています。
int num = 123; printf("Decimal representation (%%d): %d\n", num); printf("Decimal representation (%%i): %i\n", num);
入力: 独特の動作
ただし、scanf または同様の関数を使用して入力操作にデプロイすると、 %i と %d には顕著な違いがあります。 %d は、整数を符号付き 10 進数として排他的にスキャンします。対照的に、%i は 10 進数の解釈を保持しますが、16 進数 (先頭に 0x が付く) および 8 進数 (先頭に 0 が付く) の入力も受け入れます。
この違いを説明するために、次の例を考えてみましょう。
int num; scanf("%%d", &num); // Only accepts decimal input scanf("%%i", &num); // Accepts decimal, hexadecimal, or octal input
ユーザーが 033 を入力すると、scanf はそれを %i 付きの 27 として解釈します (これは、
要約...
%i と %d はフォーマットされた IO で同様の目的を共有しますが、それらの違いは、入力操作中の動作にあります。 %d は符号付き 10 進数入力に限定されますが、%i は 10 進数と他の基本形式 (16 進数と 8 進数) の両方をシームレスに処理します。この理解は、プログラムの特定のニーズに合わせて入力操作を調整するために非常に重要です。
以上がC の書式設定された入出力関数の `%i` と `%d` の主な違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。