ホームページ > バックエンド開発 > C++ > C および C の可変引数関数は自動的に float を double に昇格しますか?

C および C の可変引数関数は自動的に float を double に昇格しますか?

Patricia Arquette
リリース: 2024-11-16 04:13:02
オリジナル
707 人が閲覧しました

Do Variadic Functions in C and C   Automatically Promote Floats to Doubles?

可変個引数関数での Float プロモーション

可変個引数関数では、異なる型の可変数の引数を渡すことができます。 C および C では、 float 引数を printf() のような可変個引数関数に渡そうとすると、特有の動作が発生します。直感に反して、float は関数によって受け取られる前に double にプロモートされます。

Do Variadic Functions Auto-Promote Floats?

はい、C の可変個引数関数ですC では、float 引数が double に自動的に昇格されます。この動作は言語標準で定義されています:

C99 (ドラフト):

Arguments that have type float are promoted to double. These are called the default argument promotions.
ログイン後にコピー

C (ドラフト):

A floating point type that is subject to the floating point promotion, the value of the argument is converted to the promoted type before the call.
ログイン後にコピー

このプロモーションは、C の過去のバージョンとの互換性のために残されています。潜在的な欠点にもかかわらず、依然としてC99 および C のデフォルトの動作。

printf() の影響

printf() の場合、printf() が書式指定子と引数を予期しているためにこの現象が発生します。合わせるために。 double と float の形式指定子は異なるため、関数の要件を満たすために float 引数は double にプロモートされます。これにより互換性が確保され、浮動小数点引数の処理が簡素化されます。

以上がC および C の可変引数関数は自動的に float を double に昇格しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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