mikrocontroller.net

Forum: Compiler & IDEs Vergleichsoperatoren in Abfragen


Autor: Joachim B. (jojo84)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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 )

Autor: Joachim B. (jojo84)
Datum:

Bewertung
0 lesenswert
nicht 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 ;) ...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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 Moderator
Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Joachim B. (jojo84)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super, dankeschön!

Erledigt :)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.