C definiert 0 als falsch und alles andere als wahr. Positiv, negativ, was auch immer.
Ich glaube, ich habe vor kurzem befürwortet die Verwendung von typedef enum { false, true } bool;
, also werde ich es besitzen. (Wenn mein Original-Code nicht hatte ein typedef
beteiligt, das war eine Fehleinschätzung meinerseits.) Alle Nicht-Null-Werte sind wahr, so würde ich nicht einen Aufzählungs bool
Typen für Dinge wie dieser Anwalt mit:
if(x == true) // not what you want
if(!x == false) // works, but why so much effort?
Ich bevorzuge einfach if(x)
oder if(!x)
zu expliziten Tests gegen boolesche Werte. Aber manchmal ist es gut, einen booleschen Typ zu haben:
bool is_something(int x)
{ // assume for the sake of an argument that the test is reasonably complex
if(/* something */) return false;
if(/* something else */) return true;
return false;
}
Dies ist nicht besser als der Typ int
sein zu haben, aber zumindest sind Sie ist explizit mit dem, was das Ergebnis soll.
Auch nach jemand anderem über eine bessere bool
könnte sein:
typedef enum { false, true = !false } bool;
Ich glaube !
garantiert 0 oder 1 zurück, aber ich könnte falsch sein, und die oben genannten Arbeiten gut oder so.
Alles was nicht "falsch" ist, ist "wahr"? – khachik
Ich denke, dass http://stackoverflow.com/questions/727196/boolean-true-positive-1-or-negative-1 Ihre Frage –