Ich habe mich gefragt, tut es true
gleich 1 und false
gleich 0 und wie?
Ist wahr gleich 1 und falsch gleich 0? [duplicate]
Don Luna
Andreas Marschall
false == 0
und true = !false
. Dh alles, was nicht Null ist und in einen booleschen Wert umgewandelt werden kann, ist es nicht false
also es muss sein true
. Einige Beispiele zur Verdeutlichung:
if(0) // false
if(1) // true
if(2) // true
if(0 == false) // true
if(0 == true) // false
if(1 == false) // false
if(1 == true) // true
if(2 == false) // false
if(2 == true) // false
cout << false // 0
cout << true // 1
true
entspricht 1
aber alle Nicht-Null int
bewertet zu true
aber nicht gleich zu true
außer 1
.
-
true == 1
. Andere Nicht-Null-Werte sind wahr, sind es aber nichttrue
.– dan04
4. März 2011 um 2:55 Uhr
-
Nein, er hat recht. Ich mache die impliziten Konvertierungen klar.
int(true)==1
undbool(2)==true
sondern2 != int(true)
.– MSalter
4. März 2011 um 8:54 Uhr
-
Ich verstehe, was Sie sagen, aktualisierte Antwort, um den Unterschied zwischen deutlich zu machen auswerten zu
true
und sein gleich zutrue
.– Andreas Marshall
4. März 2011 um 9:16 Uhr
-
2 ist auch wahr? Das heißt, jede Nicht-Null ist wahr?
– Benutzer6288471
4. August 2016 um 0:41 Uhr
-
@ user6288471 Ja, das stimmt.
– EIN
17. August 2017 um 16:57 Uhr
Ja, das ist richtig. “Boolesche Variablen haben nur zwei mögliche Werte: wahr (1) und falsch (0).”
cpp-Tutorial zu booleschen Werten
-
bool hat KEINEN ganzzahligen Wert. C++ verlangt dies beim Konvertieren von bool in ganzzahlige Typen
true
wertet zu1
und falsche wertet zu0
und von Integral/Float-Typen heißt es, dass ein Nullwert, soo0
und-0
auswerten zufalse
alle anderen Werte werden ausgewertettrue
.bool
ist ein ganzzahliger Typ, aber keine ganze Zahl. Intern kann ein Compiler entscheiden, den Wert 3 für zu verwendenfalse
und64
für wahr, da der Standard keine Beschränkungen für seine interne Darstellung auferlegt.– ABaumstumpf
10. Februar um 11:29 Uhr