ホームページ >バックエンド開発 >C++ >C の書式設定された入出力関数の `%i` と `%d` の主な違いは何ですか?

C の書式設定された入出力関数の `%i` と `%d` の主な違いは何ですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-18 13:45:16550ブラウズ

What's the Key Difference Between `%i` and `%d` in C's Formatted Input/Output Functions?

変換指定子のニュアンスを理解する: 書式付き 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 サイトの他の関連記事を参照してください。

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