詳細: Printf() が浮動小数点数を倍精度浮動小数点数に昇格させる理由
Printf() が浮動小数点パラメータを double に昇格させる理由単に可変長関数だからというだけではありません。 C 標準および C 標準によれば、可変個引数関数へのすべての float 引数は渡される前に double にプロモートされます。
C99 標準のセクション 6.5.2.2 には、次のように明確に記載されています。「[...] 浮動小数点型パラメータは double にプロモートされます。これらは、デフォルト パラメータ プロモーションと呼ばれます。[...]"
C ドラフト標準セクション 5.2.2このセクションでは、「[...] 浮動小数点型パラメータが浮動小数点昇格 (4.6) の影響を受ける場合、パラメータ値は呼び出し前に昇格型に変換されます。[...]"
さらに、セクション 4.6 では、「float 型の pr 値は double 型の pr 値に変換できます。値は変更されません。」
Cppreference は C をうまく要約しています。変数パラメータ関数のデフォルトの変換: 「
(float から double へのプロモーション を含む)。 「
以上がPrintf() が float を double に昇格させるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。