Vergleiche: ungleich vs nicht gleich
-
Hallo zusammen,
nach Verlassen eines Formulars werte ich ModalResult aus. Im Fall mrCancel trifft die Bedingung Fall A zu, Fall B nicht, warum? Ich hatte beides für gleichwertig gehalten.
Fall A:
if(Form1->ModalResult != mrOk)
Fall B:
if(!Form1->ModalResult == mrOk)
Gruß
Leo
-
Der operator! hat eine höhere Priorität hat als der operator==, daher werden die Ausdrücke unterschiedlich ausgewertet:
Form1->ModalResult != mrOk entspricht ((Form1->ModalResult) != (mrOk))
und
!Form1->ModalResult == mrOk entspricht ((!Form1->ModalResult) == (mrOk)
Im zweiten Beispiel wird also Form->ModalResult erst negiert und dann mit mrOk verglichen, was nicht der Negation des Vergleichs von Form->ModalResult und mrOk entspricht.
-
if(!Form1->ModalResult == mrOk)
Kleiner Denkfehler: Du negierst nicht den Vergleich, sondern Form1->ModalResult
Du musst erst den Vergleich durchführen und dann erst negieren:
if(!(Form1->ModalResult == mrOk))
[Edit] Seufzer, zu langsam...
-
Okay, besten Dank!
Leo