„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Erhöhen alle variadischen Funktionen „float“-Argumente zu „double“?

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

Veröffentlicht am 16.11.2024
Durchsuche:338

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

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

  • 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 Variadic-Funktionskonvertierungen

cppreference bietet eine Zusammenfassung der Standardkonvertierungen für Variadische Funktionen in C:

  • std::nullptr_t to void*
  • Float-Argumente zu double
  • Integer-Promotion für Bool, Char, Short und Enumerationen

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.“

Neuestes Tutorial Mehr>

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