Heim >Backend-Entwicklung >C++ >Warum befördert Printf() Floats zu Doubles?
Deep Dive: Warum Printf() Gleitkommazahlen zu Gleitkommazahlen mit doppelter Genauigkeit hochstuft
Warum Printf() Gleitkommazahlen zu Double hochstuft , nicht nur, weil es eine variadische Funktion ist. Gemäß dem C-Standard und dem C-Standard werden alle Float-Argumente für variadische Funktionen vor der Übergabe auf double heraufgestuft.
Abschnitt 6.5.2.2 des C99-Standards besagt eindeutig: „[...] Parameter vom Typ Gleitkomma werden auf Double heraufgestuft. Diese werden als Standardparameter-Promotionen bezeichnet. [...]“
In Abschnitt 5.2.2 des C-Standardentwurfs heißt es außerdem: „[...] Wenn ein Gleitkomma-Typparameter von der Gleitkomma-Heraufstufung (4.6) betroffen ist, wird der Parameterwert vor dem heraufgestuften Typ konvertiert Aufruf. [.. .]“
Außerdem heißt es in Abschnitt 4.6: „Ein PR-Wert vom Typ Float kann in einen PR-Wert vom Typ Double konvertiert werden.“
Cppreference fasst C gut zusammen. Die Standardkonvertierung variabler Parameterfunktionen: „
In C dient diese Konvertierung der Kompatibilität mit K&R C The In der Spezifikation des Internationalen Standards (Programmiersprache – C) heißt es eindeutig: „Aus Gründen der Kompatibilität mit der bisherigen Praxis werden in Ermangelung von Prototypdeklarationen alle Parameter-Promotionen wie von K&R beschrieben durchgeführt, einschließlich Float zu Double Die Verbesserung . „
Das obige ist der detaillierte Inhalt vonWarum befördert Printf() Floats zu Doubles?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!