Heim > Backend-Entwicklung > C++ > Warum werden Float-Argumente in printf() und anderen variadischen Funktionen auf Double heraufgestuft?

Warum werden Float-Argumente in printf() und anderen variadischen Funktionen auf Double heraufgestuft?

DDD
Freigeben: 2024-11-19 08:22:02
Original
979 Leute haben es durchsucht

Why Are Float Arguments Promoted to Double in printf() and Other Variadic Functions?

Heraufstufung von Float-Argumenten zu Double in printf()

In einer früheren Diskussion wurde darauf hingewiesen, dass, wenn ein Float an printf übergeben wird () wird auf double heraufgestuft, bevor es von der Funktion verwendet wird. Dieses Verhalten ist nicht spezifisch für printf(), sondern für alle variadischen Funktionen.

Ohne eine Prototypdeklaration erfolgen alle Argumentheraufstufungen in C und C wie im K&R-C-Standard definiert. Dazu gehört die Heraufstufung von Float-Argumenten in das Double-Format, auch wenn dies nicht erwünscht ist.

Variadic Function Argument Promotion

Gemäß dem C99-Standard (Abschnitt 6.5.2.2) Argumente vom Typ float werden auf double heraufgestuft, bevor sie an variadische Funktionen übergeben werden. In ähnlicher Weise besagt der C-Standard (Abschnitt 5.2.2), dass Gleitkommaargumente vor dem Funktionsaufruf in den heraufgestuften Typ (double) konvertiert werden.

cppreference bietet einen klaren Überblick über die Standardkonvertierungen für variadische Funktionen in C , einschließlich der Konvertierung von Float-Argumenten in Double.

Kompatibilität mit K&R C

Die Heraufstufung von Float-Argumenten in Double in variadic Funktionen wurde in C und C aus Kompatibilitätsgründen beibehalten mit dem originalen K&R C-Standard. Trotz Bedenken hinsichtlich möglicher Datenverluste bleibt diese Konvertierung aus Gründen der Abwärtskompatibilität bestehen.

Das obige ist der detaillierte Inhalt vonWarum werden Float-Argumente in printf() und anderen variadischen Funktionen auf Double heraufgestuft?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage