Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Ausdruck mit 2 mal <

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
27.04.2005, 10:56 Uhr
hahgeh



Hallo,

ich habe heute Code entdeckt, den ich noch nie gesehen habe


C++:
if(100 > temperatur > 199){...}


Wie wird das überhaupt ausgewertet, wenn mehrere Vergleichsoperatoren dort stehen?
Falls das funktioniert und eine Temperatur zwischen 100 und 199 "wahr" ergeben soll, müßten dann nicht die > andersrum sein?

Vielen Dank, falls Antwort

Dieser Post wurde am 27.04.2005 um 10:58 Uhr von hahgeh editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.04.2005, 11:33 Uhr
ao

(Operator)



Zitat von hahgeh:
Wie wird das überhaupt ausgewertet

Von links nach rechts. Der erste Vergleich (100 > temperatur) ergibt entweder true oder false. Dieses Zwischenergebnis wird dann mit 199 verglichen, dazu muss es nach int umgewandelt werden. Da true 1 und false 0 ist, ist das Ergebnis des zweiten Vergleichs immer false.

Und du hast recht, die Vergleichsoperatoren müssten andersrum sein. Nur wäre dann das Gesamtergebnis immer true.

Die Moral von der Geschicht: Vergleichsketten sind zwar korrekter C-Code, aber sie werden nicht so ausgewertet, wie man es erwartet. Also: Finger davonlassen!

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.04.2005, 14:15 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


man könnte auch einfach noch ein paar klammern reinmachen, dann wirds deutlicher:


C++:
if( (100 > temperatur) > 199){...}



wie man sieht wird das insgesamt false (ich denke das könnten compiler dann sogar wegoptimieren?)
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: