@Saeuferaeffchen

Du hast ganz recht und im Grunde haben wir ja vollkommen das selbe gesagt. Nur war ich nen Tick schneller

@ Topic

Da das Thema jetzt ja geklaehrt ist, koennte man diesen Thread ja zu einem Thread ueber Programmierfallstricke umfunktionieren. Ich bin naemlich letztens erst ueber ein Produkt eigener Dummheit gestolpert:

Jeder kennt das: Man hat ein mathematisches Konstrukt ausgearbeitet und uebertraegt das auf C(++). Alles scheint zu funktionieren, doch nach wochen oder Monaten faellt einem was auf, dass der Code nicht so tut, wie er tun sollte, und manchmal seltsamen Mist ausgibt ... Nach aufwaendigem Debuging meines mehere tausend Zeilen langen Codes ueber mehere Dateien bin ich dann auf folgendes gestossen:

Code:
if ( a < b < c ) { ... }
Sieht soweit gar nicht verkehrt aus, und -Wall meckert auch nicht rum.
Nur leider gehen hier die Vorstellungen von Naturwissenschaftler und Compiler auseinander:

Der Naturwissenschaftler liest:
Code:
if ((a < b) && ( b < c ))
Der Compiler liest:
Code:
 if ( ((double) ((bool) (a < b))) < c )
oder mit anderen Worten:
Code:
 if ( ((a < b) ? 1.0 : 0.0 ) < c )
oder fuer Leute ohne C-Syntax:
Code:
double q = 0.0; 
if ( a < b )  q = 1.0;
if ( q < c ) { ... }
Das das nicht gaaanz das Selbe ist, war mir dann auch klar. MMn waere das auch ein klassischer Kandidat fuer ein -Wall gewesen, denn wann will man schon mal die zweite Interpretation haben ?