Heim >Backend-Entwicklung >C++ >Ist die Bool-zu-Int-Konvertierung in C und C portierbar?
bool to int Conversion
Betrachten Sie den folgenden Codeausschnitt:
int x = 4 < 5; assert(x == 1); x = 4 > 5; assert(x == 0);
Es stellt sich die Frage: Ist das eine Konvertierung? tragbar? Können wir garantieren, dass beide Behauptungen bestehen?
Antwort:
Ja, diese Konvertierung ist vollständig portierbar und kompatibel mit dem C-Standard. Die explizite Konvertierung von bool nach int ist in C implizit, wie in §4.7/4 des C 11- oder 14-Standards und §7.8/4 des C 17-Standards definiert.
Im Einzelnen heißt es im Standard: „Wenn der Quelltyp bool ist, wird der Wert false in Null und der Wert true in eins konvertiert.“
Daher im gegebenen Code:
Hinweis für C:
In C ist ein Bool-Datentyp nicht der Fall gegenwärtig. Allerdings führt C99 den Typ _Bool ein, bei dem es sich um ein Makro handelt, das in der Header-Datei stdbool.h definiert ist. Darüber hinaus sind „true“ und „false“ Makros, die sich zu den ganzzahligen Konstanten 1 bzw. 0 erweitern lassen.
Daher gilt in C:
Das obige ist der detaillierte Inhalt vonIst die Bool-zu-Int-Konvertierung in C und C portierbar?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!