Heim > Backend-Entwicklung > C++ > Hauptteil

Erhöhen alle variadischen Funktionen „float'-Argumente zu „double'?

Barbara Streisand
Freigeben: 2024-11-23 06:21:16
Original
706 Leute haben es durchsucht

Do All Variadic Functions Promote `float` Arguments to `double`?

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

  • C99 (Abschnitt 6.5.2.2): „Argumente vom Typ float werden zu double heraufgestuft.“
  • C ( Abschnitt 5.2.2): „Ein Gleitkommatyp... wird vor dem in den heraufgestuften Typ konvertiert Aufruf.“
  • C (Abschnitt 4.6): „Ein Wert vom Typ float kann in einen Wert vom Typ double konvertiert werden.“

cppreference zu variadischen Funktionskonvertierungen

cppreference bietet eine Zusammenfassung der Standardeinstellung Konvertierungen für variadische Funktionen in C:

  • std::nullptr_t in void*
  • Float-Argumente in double
  • Integer-Promotion für Bool, Char, Short und Aufzählungen

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage