Kann ein Boolescher Wert immer Null oder Eins werden, wenn er in eine Ganzzahl konvertiert wird?
Bei der Konvertierung eines Booleschen Werts in eine Ganzzahl scheinen viele Compiler dies zu tun Behalten Sie nur 0 oder 1 bei, was Fragen zur Zuverlässigkeit dieses Verhaltens aufwirft. Sehen wir uns ein Beispiel an:
int a = 2; bool b = a; int c = 3 + b; // What is the result? 4 or 5?
Antwort: Ja, bool ist garantiert 0 oder 1, wenn es in eine Ganzzahl konvertiert wird.
In C:
Der C-Standard (§4.5/4) besagt ausdrücklich: „Ein R-Wert vom Typ bool kann in einen R-Wert vom Typ int konvertiert werden, wobei false zu Null und true zu Eins wird wird 0 oder 1 (§6.3.1.2/1): „Wenn ein Skalarwert in _Bool konvertiert wird, ist das Ergebnis 0, wenn der Wert gleich ist 0; andernfalls ist das Ergebnis 1.“
Bei der Konvertierung in int ist der Vorgang unkompliziert, da int 0 und 1 enthalten kann, sodass sich der Wert nicht ändert (§6.3.1.3).
Das obige ist der detaillierte Inhalt vonFührt die Konvertierung eines Booleschen Werts in eine Ganzzahl immer zu 0 oder 1?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!