Forum: Compiler & IDEs Vergleichsoperatoren in Abfragen


von Joachim B. (jojo84)


Lesenswert?

Hallo Forum!

Ich hab eine Frage, worauf die Antwort bestimmt ganz einfach ist. Aber 
ich bin eben nicht 100%ig sicher. Es handelt sich um die Bedingung bei 
z.B. einer if-Abfrage.
Ich hab das bisher immer ganz ordentlich so gemacht:
if(x == 0)
{...}
macht NUR DANN was, wenn x = 0 ist

oder
if(x != 0)
{...}
macht was, wenn x irgendwas anderes als 0 ist


Jetzt hab ich aber nen Code vorliegen, wo steht
if(x)
{...}
else
{...}

Ich interpretiere das so, daß die Bedingung erfüllt ist, wenn x 
irgendwas nur nicht 0 ist (z.B. 1). Sonst, also wenn x = 0 ist, dann 
(else).

Daraufhin steht da aber noch
if(!x)
{...}
else
{...}

Ich interpretiere das so, daß die Bedingung erfüllt ist, wenn x NICHT 
etwas anderes als 0 ist, also x = 0. Sonst, also wenn x etwas anderes 
als 0 ist, dann (else).

So, WENN ich das jetzt richtig interpretiert haben sollte, DANN ist das 
doch doppelt-gemoppelt! Weil dann ist ja die erste if-else-Abfage 
einfach nur das Umgekehrte von der zweiter, oder?

Hoffe ihr könnt mir bei diesem schlichten "Problem" helfen.
Danke schonmal im Voraus,
vG,
Joachim

von Karl H. (kbuchegg)


Lesenswert?

Du sollst nicht interpretieren, sondern ein C-Buch lesen.

In C ist jeder Ausdruck, der ein Ergebnis von 0 liefert auch 
gleichzeitig 'logisch FALSE, während jedes Ergebnis ungleich 0 als 
'logisch TRUE' gewertet wird

if( x )
ist also identisch zu
if( x != 0 )

und
if( !x )
ist identisch zu
if( x == 0 )

von Joachim B. (jojo84)


Lesenswert?

Hi und danke für die rasche Antwort! Hast ja recht mit dem Buch, aber 
ich bin grad nicht zu Hause und hab das Buch nicht greifbar :( .
Aber ist meine "Verstehungsweise" des oberen Codes soweit korrekt? Ich 
finde, daß sich deine (Karl Heinz) Aussage mit meiner deckt ;) ...

von Karl H. (kbuchegg)


Lesenswert?

Das hier

> Daraufhin steht da aber noch
> if(!x)
> {...}
> else
> {...}
>
> Ich interpretiere das so, daß die Bedingung erfüllt ist, wenn x NICHT
> etwas anderes als 0 ist, also x = 0. Sonst, also wenn x etwas anderes
> als 0 ist, dann (else).

ist falsch aufgefasst. Denk nochmal darüber nach.

: Wiederhergestellt durch User
von Karl H. (kbuchegg)


Lesenswert?

Karl heinz Buchegger schrieb:
> Das hier
>
>> Daraufhin steht da aber noch
>> if(!x)
>> {...}
>> else
>> {...}
>>
>> Ich interpretiere das so, daß die Bedingung erfüllt ist, wenn x NICHT
>> etwas anderes als 0 ist, also x = 0. Sonst, also wenn x etwas anderes
>> als 0 ist, dann (else).
>
> ist falsch aufgefasst. Denk nochmal darüber nach.

Vergiss diese Aussage.
Deine Auffassung ist korrekt. Ich habe dein abschliessende 
Schlussfolgerung (die richtig ist) übersehen.

von Joachim B. (jojo84)


Lesenswert?

Super, dankeschön!

Erledigt :)

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
Noch kein Account? Hier anmelden.