C define 0 como falso y todo lo demás como verdadero. Positivo, negativo, lo que sea.
Creo que recientemente recomendé el uso de typedef enum { false, true } bool;
, así que lo reconoceré. (Si mi código original no tenía un typedef
involucrados, que fue un error de juicio de mi parte.) Todos los valores distintos de cero son verdaderas, por lo que no estaría a favor de usar un enumerado bool
tipo para cosas como esta:
if(x == true) // not what you want
if(!x == false) // works, but why so much effort?
Generalmente permito simplemente if(x)
o if(!x)
para pruebas explícitas contra valores booleanos. Sin embargo, a veces es bueno tener un tipo booleano:
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;
}
Esto no es mejor que tener el tipo sea int
, pero al menos estás siendo explícita con lo que el resultado se ha diseñado.
También, de acuerdo con otra persona anteriormente, una mejor bool
podría ser:
typedef enum { false, true = !false } bool;
creo !
está garantizado para devolver 0 o 1, pero podría estar equivocado, y lo anterior funciona así de cualquier manera.
Todo lo que no es 'falso' es' verdad'? – khachik
Creo que esto http://stackoverflow.com/questions/727196/boolean-true-positive-1-or-negative-1 respondería a su pregunta –