printf() やその他の可変個引数関数で Float 引数が Double に昇格されるのはなぜですか?

DDD
リリース: 2024-11-19 08:22:02
オリジナル
939 人が閲覧しました

Why Are Float Arguments Promoted to Double in printf() and Other Variadic Functions?

printf() での Float 引数の Double への昇格

前の議論で、float が printf に渡されるとき、 () の場合、関数で使用される前に double にプロモートされます。この動作は printf() に固有のものではなく、すべての可変引数関数に固有のものです。

プロトタイプ宣言がない場合、C および C のすべての引数の昇格は、K&R C 標準で定義されているように発生します。これには、望ましくない場合でも、float 引数を double に昇格することが含まれます。

可変個引数関数の引数の昇格

C99 標準 (セクション 6.5.2.2) に従って、引数はfloat 型の関数は、可変引数関数に渡される前に double にプロモートされます。同様に、C 標準 (セクション 5.2.2) では、浮動小数点引数は関数呼び出しの前にプロモート型 (double) に変換されると規定されています。

cppreference は、C の可変個引数関数のデフォルト変換の明確な概要を提供します。

K&R C との互換性

可変長引数関数における float 引数の double への昇格は、互換性のために C および C でも維持されました。オリジナルのK&R C規格を採用。データ損失の可能性に関する懸念にもかかわらず、この変換は下位互換性のためにそのまま残されています。

以上がprintf() やその他の可変個引数関数で Float 引数が Double に昇格されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート