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 linkefalse
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 tunFinnegan