Ist (x==x) immer 1 und (x!=x) immer 0?

Gast #438080
Lesenswert?
• ▲
▼
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?
Moderator Persönliche Seite #438118
Lesenswert?
• ▲
▼
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()) ...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren