Bool-Konvertierung in Int: Ist garantiert 0 oder 1?
In Programmiersprachen wie C und C wird Bool häufig zur Darstellung verwendet boolesche Werte von wahr und falsch. Hinter den Kulissen werden diese Werte jedoch häufig als Ganzzahlen gespeichert. Dies wirft die Frage auf: Wenn ein Bool in ein Int konvertiert wird, ist das Ergebnis garantiert entweder 0 oder 1?
C
In C lautet die Antwort ein klares Ja. Gemäß dem C-Standard (§4.5/4) „kann ein R-Wert vom Typ bool in einen R-Wert vom Typ int konvertiert werden, wobei false zu Null und True zu Eins wird.“ Das heißt, wenn ein Bool in C in einen Int umgewandelt wird, ist das Ergebnis immer 0 oder 1.
C
In C ist die Situation etwas anders aber genauso klar. Gemäß dem C-Standard (§6.3.1.2/1): „Wenn ein Skalarwert in _Bool konvertiert wird, ist das Ergebnis 0, wenn der Wert gleich 0 ist; andernfalls ist das Ergebnis 1.“ Dies bedeutet, dass, wenn ein Bool (dargestellt als _Bool in C) in ein Int konvertiert wird, das Ergebnis wieder 0 oder 1 ist.
Praktisches Beispiel
Zur Veranschaulichung Dieses Verhalten im Code:
int a = 2; bool b = a; int c = 3 + b; // 4
In diesem Beispiel wird die Bool-Variable b auf den Wert von int a initialisiert (was ist 2), aber da bool-Werte als 0 oder 1 gespeichert werden, wird b zu 1. Die anschließende Addition von 3 führt dazu, dass c der Wert 4 zugewiesen wird. Dies bestätigt, dass bool als 1 in int konvertiert wird, was ein Ergebnis von 0 oder garantiert 1.
Das obige ist der detaillierte Inhalt vonIst die Bool-Konvertierung in Int in C und C immer 0 oder 1?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!