Wie konvertiert C boolesche Werte implizit in ganze Zahlen?
Dec 03, 2024 pm 08:47 PMImplizite Konvertierung: Bool-zu-Int-Transformation
In C erfolgt eine nicht intuitive Konvertierung, wenn einer int-Variablen ein Bool-Ausdruck zugewiesen wird. Betrachten Sie den folgenden Codeausschnitt:
int x = 4 < 5; assert(x == 1); x = 4 > 5; assert(x == 0);
Konvertierungsdetails
Gemäß dem C-Standard (§4.7/4 in C 11/14, §7.8/4 in C 17, §7.3.9/2 in C 20):
- Die Der Bool-Wert „false“ wird implizit in 0 konvertiert.
- Der Bool-Wert „true“ wird implizit in 1 konvertiert.
Daher ist im angegebenen Code 4 < 5 wird als wahr ausgewertet, was in 1 umgewandelt und in x gespeichert wird, während 4 > 5 ergibt „falsch“, was in 0 umgewandelt und in x gespeichert wird.
Portabilität
Diese implizite Bool-zu-Int-Konvertierung ist auf allen C-Plattformen portierbar.
Vergleich mit C
Im Gegensatz zu C unterstützt C das nicht explizit bool-Datentyp vor dem C99-Standard. Mit dem C99-Standard wurde jedoch der Typ _Bool eingeführt, der bool in C entspricht. In C99 werden die Makros true und false zu den ganzzahligen Konstanten 1 bzw. 0 erweitert. Infolgedessen ist das Konvertierungsverhalten von Bool zu Int in C und C ähnlich.
Fazit
Die implizite Konvertierung von Bool zu Int im angegebenen Code ist standardkonform und über C-Plattformen portierbar. Obwohl es unorthodox erscheinen mag, ist es für das Verständnis des zugrunde liegenden Verhaltens der C-Sprache unerlässlich.
Das obige ist der detaillierte Inhalt vonWie konvertiert C boolesche Werte implizit in ganze Zahlen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert?

C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte

GULC: C -Bibliothek von Grund auf neu gebaut

Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die?

eindeutiger Gebrauch und Phrasenfreigabe

Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)?

Wo ist der Rückgabewert der C -Sprachfunktion im Speicher?

Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient?
