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

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

Patricia Arquette
Patricia ArquetteOriginal
2024-11-19 00:06:02576Durchsuche

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!

Stellungnahme:
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