Frage mich gerade, ob z.B. U8 senslessFunc(void) { U8 a=3, b=3; return(a==b); } immer 1 zurückgibt oder ob es auch ein anderer von 0 abweichender Wert sein kann? Hintergrund ist die Auswertung wie: typedef enum{ FALSE, //0 TRUE //1 }BOOL; void anotherFunc(void) { if( myFunc() == TRUE ) { //tue was.... } } Testweise haut es hin. Aber wie sieht das unter anderen Compilern aus?
Nie mit "TRUE" vergleichen. Nur mit != FALSE bzw. != 0 vergleichen bzw. den Vergleich ganz weglassen:
1 | if (myFunc()) |
2 | {
|
3 | // machwas
|
4 | }
|
Ah, mir ist gerade eingefallen, daß typedef enum{ FALSE = (1!=1), TRUE = (1==1) }BOOL; das Problem ja lösen müßte. Antwort zu obigen Post würde mich trotzdem noch interessieren! Danke!
@ Rufus, dem entnehme ich, daß (1==1) nicht zwingend genau 1 sein muß. Danke für die Tips! Gruß Frank
Bringt C99 nicht selber eine Definition von bool mit (per Makro)? Das sollte der GCC doch können.
Frank wrote: > Ah, mir ist gerade eingefallen, daß > > typedef enum{ > FALSE = (1!=1), > TRUE = (1==1) > }BOOL; > > das Problem ja lösen müßte. Mir ist so, als würde die comp.lang.c-FAQ irgendwo erläutern, warum dieses da sinnlos ist. Ich stimme jedoch mit Thomas B. überein, dass es das Sinnvollste ist, #include <stdbool.h> zu nehmen sowie den Datentyp "bool" mit den Werten "true" und "false" (alles klein geschrieben). Außerdem siehe Rufus: etwas "Booligeres" als einen Wahrheitswert gibt es nicht, da nach einem if (oder while oder so) stets ein Wahrheitswert gefragt wird, verbieten sich Dinge wie == true oder != false.
1 | if (boolvar) ... |
2 | ...
|
3 | if (!boolfunc()) ... |
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.