可変引数関数での float 引数の double への昇格
前の議論で、printf() は float 引数を double に昇格させることに注意しました。それを受け入れる前に倍増します。ここで疑問が生じます: すべての可変個引数関数はこの昇格を実行しますか?
可変個引数の昇格
はい、C99 と C 標準の両方に従って、float 引数は可変個引数に渡されます。関数は double に昇格します。
標準仕様
可変個引数関数の cppreference変換
cppreference は、C の可変個引数関数のデフォルト変換の概要を提供します。
プロモーションの起源
このプロモーションは、潜在的な欠点にもかかわらず、K&R C 標準との互換性のために C に導入されました。 C 理論的根拠には次のように記載されています:
「過去の慣行との互換性を保つため、プロトタイプ宣言がない場合、すべての引数の昇格は K&R で説明されているように行われます。これには、必ずしも望ましいとは限らない float から double への昇格も含まれます。」
以上がすべての可変引数関数は `float` 引数を `double` に昇格しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。