Verständnisproblem bei Abfrage

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Verständnisproblem bei Abfrage

    Und schon wieder eine Sache, die ich nicht verstehen kann ?( :

    Ich vergleiche eine Integer Variable mit einer Integer Eigenschaft einer Klasse. Beide sind als int deklariert.

    Der Vergleich prüft auf Ungleichheit beider Werte und ich habe geschrieben:

    Quellcode

    1. if (spalte.iDatenSatzNr != satzNr)

    Der Compiler ist zufrieden, das Programm läuft aber nicht richtig.

    Schreibe ich hingegen:

    Quellcode

    1. if (!spalte.iDatenSatzNr == satzNr)

    stimmt plötzlich alles!

    Eigentlich würde ich erwarten, dass bei der 2. Variante zuerst iDatenSatzNr negiert wird und das Ergebnis mit satzNr verglichen wird.
    Mit anderen Worten, ich würde hier den Fehler vermuten und nicht anders herum.

    Kann mir das einer erklären?
  • Kann ich nicht nachvollziehen, habe es so probiert:

    Quellcode

    1. int a = 6;
    2. int b = 5;
    3. if (a != b)
    4. {
    5. NSLog(@"A <> B");
    6. }
    7. Klasse_1 *obj = [[Klasse_1 alloc]init];
    8. if (obj.x != b)
    9. {
    10. NSLog(@"X <> B");
    11. }
    12. [obj release];
    13. . . .
    14. @interface Klasse_1 : NSObject
    15. {
    16. int x;
    17. }
    18. @property (nonatomic, assign)int x;
    19. @end
    20. @implementation Klasse_1
    21. @synthesize x;
    22. -(id)init
    23. {
    24. if (self = [super init])
    25. {
    26. self.x = 6;
    27. }
    28. return self;
    29. }
    30. @end
    Alles anzeigen
  • OK, ich habe mal die Werte geloggt und siehe da, die Abfrage war das einzig Richtige in einer ansonsten fehlerhaften Funktion. :rolleyes:

    Zufällig passte meine verkorkste Logik zur falschen Abfrage und brachte das richtige Ergebnis.
    Jetzt darf ich mich noch einmal durch die Logik quälen, aber dafür verstehe ich jetzt die Abfrage wieder und das ist eindeutig wichtiger!!

    Danke fürs Augen öffnen. 8)