可変個引数リストでのデフォルトの型プロモーション
C および C では、可変数の引数を持つ関数に引数を渡すとき (つまり、
整数プロモーション
C および C 標準では、ランクが int より小さい整数型はすべて昇格されることが保証されています。 int または unsigned int のいずれかに変換します。これは、int (通常、サイズが 16 ビット以上) を期待する関数に 8 ビット整数 (例: uint8_t) を渡すと、8 ビット整数は自動的に 16 ビット以上に昇格されることを意味します。
たとえば、提供されたコード スニペットでは:
uint8_t a = 5; printf("%d", a);
形式指定子 %d は int を予期しますが、a は uint8_t であるため、printf に渡される前に int に昇格されます。 .
Float プロモーション
同様に、float 値はデフォルトで double に昇格されます。これは、double を期待する関数に float を渡すと、float が自動的に倍精度に変換されることを意味します。
例
要約すると、デフォルトは可変長引数リストでの型の昇格は次のとおりです。
以上がここでは、リクエストされた質問の側面に焦点を当てた、いくつかのタイトルのオプションを示します。 ダイレクトかつクリア: * C/C 可変個引数関数ではどのような型プロモーションが発生しますか? * Variadic Func で引数はどのようにプロモートされるのかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。