|
Quellcode
|
1
2
|
int x = ...;
if(x) { ... }
|
geht da nicht.
was von der Hardware und der verwendung her oft blödsinn ist.
warum statt if(x), dass z.B. den verwendeten Speicher durch einen vergleich von x mit sich selbst und anschließender überprüfung des Zero-Flags reduzieren kann, zwingend if(x!=0) schreiben, was dann den vergleich von x mit einer Konstanten=0 produziert - außer der Compiler erkennt so ein Konstrukt und setzt es wie if(x) um, was dann aber einen uneindeutigen Quellcode provoziert.
und tatsächlich ist if(x) in den meisten fällen, in denen es verwendet wird, auch logisch sinnvoll, in dem sinne das true auch valid bedeutet. zum beispiel ist ein Zeiger als valid anzunehmen, wenn er ungleich NULL, also im sinne einer Bedingung true ist.
//EDIT: zum thema vergleiche von Zahlen mit true/false: da geb ich dir im allgemeinen recht, den true und false als integrierte Konstantern sind afaik bools;
da ist es eben ein unterschied zwischen dem bool-Wert true/false und true/false im sinnne des eerfüllens einer bedingung