Heraufstufung des Float-Arguments zu Double in variadischen Funktionen
In einer früheren Diskussion wurde festgestellt, dass printf() ein Float-Argument heraufstuft ein Double, bevor Sie es annehmen. Dies wirft die Frage auf: Führen alle variadic-Funktionen diese Heraufstufung durch?
Variadic-Argument-Promotion
Ja, gemäß den C99- und C-Standards werden Float-Argumente an variadic übergeben Funktionen werden zu double.
Standard hochgestuft Spezifikationen
cppreference zu Variadic-Funktionskonvertierungen
cppreference bietet eine Zusammenfassung der Standardkonvertierungen für Variadische Funktionen in C:
Herkunft von Aktion
Diese Aktion wurde in C eingeführt, um trotz ihrer potenziellen Nachteile mit dem K&R-C-Standard kompatibel zu sein. In der C-Begründung heißt es:
„Aus Gründen der Kompatibilität mit der bisherigen Praxis erfolgen alle Argumentumstufungen wie in K&R beschrieben, sofern keine Prototypdeklaration vorliegt, einschließlich der nicht immer wünschenswerten Heraufstufung von float zu double.“
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3