可変長引数関数での浮動小数点引数の倍精度化
前の説明で、printf() は浮動小数点引数を倍精度浮動小数点関数で倍精度化することに注意しました。それを受け入れる前に倍増します。ここで疑問が生じます: すべての可変個引数関数はこの昇格を実行しますか?
可変個引数の昇格
はい、C99 および C 標準の両方に従って、浮動小数点引数は可変個引数に渡されます。関数は double に昇格されます。
Standard仕様
可変引数関数の変換に関する cppreference
cppreference には、次のデフォルトの変換の概要が記載されています。 C の可変個引数関数:
の由来プロモーション
このプロモーションは、潜在的な欠点にもかかわらず、K&R C 標準との互換性のために C に導入されました。 C 理論的根拠には次のように記載されています:
「過去の慣行との互換性を保つため、プロトタイプ宣言がない場合、すべての引数の昇格は K&R で説明されているように行われます。これには、必ずしも望ましいとは限らない float から double への昇格も含まれます。」
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3