Heim >Backend-Entwicklung >C++ >Ist die Konvertierung von bool in int garantiert 0 oder 1?

Ist die Konvertierung von bool in int garantiert 0 oder 1?

DDD
DDDOriginal
2024-11-15 09:42:02392Durchsuche

Is bool Conversion to int Guaranteed to Be 0 or 1?

bool-Konvertierung in int: Garantiert 0 oder 1?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn