„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Ist es in C ++ und C immer 0 oder 1, wenn es in eine Ganzzahl konvertiert wird?

Ist es in C ++ und C immer 0 oder 1, wenn es in eine Ganzzahl konvertiert wird?

Gepostet am 2025-04-13
Durchsuche:678

Is Bool Conversion to Int Always 0 or 1 in C   and C?

bool Conversion zu int: garantiert 0 oder 1?

in Programmiersprachen wie c und c, bool wird gewöhnlich verwendet, um booleische Werte von True und Falsch darzustellen. 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 ist die Antwort ein Resounding Ja. Gemäß dem C -Standard (§4.5/4) kann "ein RValue vom Typ Bool in einen Rvalue vom Typ int umgewandelt werden, wobei falsch Null wird und ein wahr wird." Dies bedeutet, dass das Ergebnis, wenn ein Bool in ein in C konvertiert wird, das Ergebnis immer 0 oder 1 sein wird. Gemäß dem C -Standard (§6.3.1.2/1) "ist das Ergebnis 0, wenn ein skalarer Wert in _Bool konvertiert wird, wenn der Wert gleich 0 vergleicht, da das Ergebnis 1 ist." Dies impliziert, dass, wenn ein Bool (dargestellt als _Bool in c) in ein int konvertiert wird, das Ergebnis erneut 0 oder 1 sein wird. bool b = a; int c = 3 b; // 4

In diesem Beispiel wird die BOOL -Variable B auf den Wert von int a initialisiert (was 2), aber da BOOL -Werte als 0 oder 1 gespeichert werden, wird B zu 1. Die nachfolgende Zugabe von 3 Ergebnissen in C wird der Wert 4. Dies bestätigt, dass BOOL zu int als 1 konvertiert wird, garantiert von 0 oder 1.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3