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
Freigeben: 2024-11-15 09:42:02
Original
383 Leute haben es durchsucht

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?
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage