ホームページ > バックエンド開発 > C++ > すべての可変個引数関数は浮動小数点引数を double にプロモートしますか?

すべての可変個引数関数は浮動小数点引数を double にプロモートしますか?

Patricia Arquette
リリース: 2024-11-19 00:06:02
オリジナル
560 人が閲覧しました

Do All Variadic Functions Promote Float Arguments to Double?

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

C および C では、 printf() 関数は可変引数関数です可変数の引数を取ります。 printf() の独特な動作の 1 つは、float 引数が渡されると、関数がそれを受け取る前に double に変換されることです。ここで疑問が生じます: すべての可変個引数関数は float 引数を double にプロモートしますか?

答え:

はい、C および C の可変個引数関数は float 引数を double にプロモートします。

理由:

この動作は指定されていますC99 と C 標準の両方で。 C99 標準草案では、可変個引数関数について「float 型の引数は double に昇格される」と指定しています。同様に、C 標準では、「浮動小数点昇格の対象となる浮動小数点型は、呼び出し前に引数の値が昇格型に変換される」と規定されています。

この昇格の背後にある理論的根拠は次のとおりです。 K&R C 標準との互換性を維持します。K&R C 標準では、プロトタイプ宣言がない場合に float 引数を double にプロモートする必要がありました。常に望ましいとは限りませんが、この互換性は下位互換性の理由から維持されています。

以上がすべての可変個引数関数は浮動小数点引数を double にプロモートしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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