Gefährlicher Code



  • Hallo,

    gibt es auch Compiler die die 2.Bedingung auch noch prüfen würden. Könnte der Code also gefährlich sein ?

    for(row=5;row>=0 && col[row]!=0;row--);
    


  • Nein, für builtin-Typen ( int , float , etc.) ist durch den Standard garantiert, dass die rechte Seite von && nicht ausgewertet wird, wenn die linke false evaluiert wurde.

    Bei Typen, für welche jedoch der && -Operator überladen wurde, wird allerdings auch der rechte Ausruck ausgewertet (sofern das nicht durch irgendeine abgefahrene Expression-Template-Logik explizit verhindert wird).
    Man sollte u.a. aus diesem Grund den && -Operator ohnehin besser nicht überladen, und es ist mir auch noch keine Klasse untergekommen, wo ein Entwickler so verwegen war, das zu tun 😃

    Finnegan


Anmelden zum Antworten