Heim > Artikel > Backend-Entwicklung > Hier sind einige Titeloptionen, die sich auf den von Ihnen angeforderten Frageaspekt konzentrieren: Direkt und klar: * Welche Art von Heraufstufungen kommen in C/C-variadischen Funktionen vor? * Wie werden Argumente in Variadic Func gefördert?
Standardtyp-Promotionen in variadischen Argumentlisten
In C und C, wenn Argumente an eine Funktion mit einer variablen Anzahl von Argumenten übergeben werden (d. h. , eine variadische Funktion), treten bestimmte Standardtyp-Promotionen auf.
Ganzzahl-Promotion
Die C- und C-Standards garantieren, dass jeder Integer-Typ mit einem Rang kleiner als int hochgestuft wird entweder zu int oder unsigned int. Das bedeutet, dass, wenn Sie eine 8-Bit-Ganzzahl (z. B. uint8_t) an eine Funktion übergeben, die int erwartet (normalerweise 16 Bit oder mehr groß), die 8-Bit-Ganzzahl automatisch auf 16 Bit oder mehr heraufgestuft wird.
Zum Beispiel im bereitgestellten Codeausschnitt:
uint8_t a = 5; printf("%d", a);
Der Formatbezeichner %d erwartet ein int, aber da a ein uint8_t ist, wird es zu int heraufgestuft, bevor es an printf übergeben wird .
Float-Promotion
In ähnlicher Weise werden Float-Werte standardmäßig auf das Doppelte heraufgestuft. Das heißt, wenn Sie eine Gleitkommazahl an eine Funktion übergeben, die ein Double erwartet, wird die Gleitkommazahl automatisch in doppelte Genauigkeit konvertiert.
Beispiel
Zusammengefasst: die Standardeinstellung Typförderungen in variadischen Argumentlisten sind:
Das obige ist der detaillierte Inhalt vonHier sind einige Titeloptionen, die sich auf den von Ihnen angeforderten Frageaspekt konzentrieren: Direkt und klar: * Welche Art von Heraufstufungen kommen in C/C-variadischen Funktionen vor? * Wie werden Argumente in Variadic Func gefördert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!