Lazy evaluation



  • Hallo

    Ist das im Standard fest gelegt, dass GetPixel() nur aufgerufen wird, wenn OnScreen() true zurück gibt? Oder riskiert man da bugs? Würde das eigentlich auch ohne if() funktionieren?

    Gruss

    Stefan

    if(OnScreen(x, y) && GetPixel(x, y) == c)
    


  • Welcher Standard?



  • Ja.
    Nein. (Wäre aber uU lesbarer, wenn Du einfach zwei ifs verschachtelst.)
    Nein.

    edit: Oh, btw, "Lazy evaluation" ist hier kein guter Titel, das ist einfach klassische short-circuit evaluation: http://en.wikipedia.org/wiki/Short-circuit_evaluation


  • Mod

    Für die eingebauten Operatoren && || ?: und , gilt:
    Zwischen der Auswertung des linken Operanden und der des rechten Operanden ist ein sequence point. D.h. alle Seiteneffekte (außer ggf. der Zerstörung temporärer Objekte), die durch die Auswertung des linken Operanden entstehen, haben stattgefunden, bevor die Auswertung des anderen Operanden beginnt. Zudem werten die Operatoren && und || den rechten Operanden nur aus, sofern das Ergebnis nicht bereits durch den linken Operanden feststeht (Kurzschlussauswertung, falls lhs==false für && bzw. lhs==true für ||).
    Dies gilt nur solange es sich nicht um überladene Operatoren handelt, denn der Aufruf eines überladenen Operators ist ein normaler Funktionsaufruf: keine bestimmte Reihenfolge und keine Sequenzpunkte zwischen der Auswertung der Argumente .

    Ja.
    Nein - solange diese Operatoren nicht überladen werden.
    Ja.



  • Achso, dachte es geht darum was die Winapi Funktionen zurückgeben. Sorry


Anmelden zum Antworten