Frage:
Viele Compiler scheinen Bool zu speichern Werte entweder 0 oder 1, aber ist dieses Verhalten garantiert? Konkret im folgenden Snippet:
int a = 2; bool b = a; int c = 3 + b; // 4 or 5?
Antwort:
Ja, bool-Werte werden garantiert entweder in 0 oder 1 konvertiert, wenn sie in int konvertiert werden. Dieses Verhalten ist sowohl im C- als auch im C-Standard definiert:
C (§4.5/4):
Ein R-Wert vom Typ bool kann in einen R-Wert von konvertiert werden Geben Sie int ein, wobei false zu Null und true zu Eins wird.
C (§6.3.1.2/1):
Wenn ein Skalarwert in _Bool konvertiert wird, wird der Das Ergebnis ist 0, wenn der Wert gleich 0 ist. andernfalls ist das Ergebnis 1.
Daher wird b im gegebenen Beispiel entweder in 0 (wenn a ungleich 0 ist) oder 1 (wenn a gleich 0 ist) konvertiert. Die Addition von 3 zu b ergibt entweder 4 oder 5, abhängig vom Wert von a.
Das obige ist der detaillierte Inhalt vonIst die Konvertierung von bool in int garantiert 0 oder 1?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!