Heim > Backend-Entwicklung > C++ > Erhöhen alle variadischen Funktionen Float-Argumente auf Double?

Erhöhen alle variadischen Funktionen Float-Argumente auf Double?

Patricia Arquette
Freigeben: 2024-11-19 00:06:02
Original
568 Leute haben es durchsucht

Do All Variadic Functions Promote Float Arguments to Double?

Variadische Funktionsförderung von Float-Argumenten zur Verdopplung in printf()

In C und C ist die Funktion printf() eine variadische Funktion das erfordert eine variable Anzahl von Argumenten. Ein besonderes Verhalten von printf() besteht darin, dass ein übergebenes Float-Argument in ein Double konvertiert wird, bevor die Funktion es empfängt. Dies wirft die Frage auf: Fördern alle Variadic-Funktionen Float-Argumente in Double?

Antwort:

Ja, Variadic-Funktionen in C und C fördern Float-Argumente in Double.

Begründung:

Dieses Verhalten ist sowohl in der C99- und C-Standards. Der Entwurf des C99-Standards legt fest, dass „Argumente vom Typ float zu double heraufgestuft werden“ für variadische Funktionen. In ähnlicher Weise besagt der C-Standard, dass „bei einem Gleitkommatyp, der der Gleitkomma-Heraufstufung unterliegt, der Wert des Arguments vor dem Aufruf in den heraufgestuften Typ konvertiert wird.“

Der Grund für diese Heraufstufung ist: Behalten Sie die Kompatibilität mit dem K&R-C-Standard bei, der erforderte, dass Float-Argumente in Abwesenheit einer Prototypdeklaration auf „double“ heraufgestuft werden mussten. Obwohl diese Kompatibilität nicht immer wünschenswert ist, wurde sie aus Gründen der Abwärtskompatibilität beibehalten.

Das obige ist der detaillierte Inhalt vonErhöhen alle variadischen Funktionen Float-Argumente auf 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