Heraufstufung des Float-Arguments zu Double in variadischen Funktionen
In einer früheren Diskussion wurde darauf hingewiesen, dass printf() ein Float-Argument zu Double befördert 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 auf double hochgestuft.
Standard Spezifikationen
cppreference zu variadischen Funktionskonvertierungen
cppreference bietet eine Zusammenfassung der Standardeinstellung Konvertierungen für variadische Funktionen in C:
Herkunft von Aktion
Diese Aktion wurde in C eingeführt, um trotz möglicher 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.“
Das obige ist der detaillierte Inhalt vonErhöhen alle variadischen Funktionen „float'-Argumente zu „double'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!