Den Wed, 25 Apr 2001 19:35:26 +0200 skrev Lisbet Kaas Petersen:
>Hej
>
>bool dataHysterese
>float dataValue, maxData, lastData
>
> if (((!dataHysterese && (dataValue == (maxData - 0.1)) && (lastData >=
>maxData)) || //ingen warning
> (dataHysterese && (dataValue == lastData == (float)(maxData -0.1)))) ||
> //warning C4805: '==' : unsafe mix of type 'bool' and type 'float' in
>operation
> ((!dataHysterese && (dataValue == maxData) && (lastData >= maxData)) ||
>//ingen warning
> (dataHysterese && (dataValue == lastData == maxData))))
>//warning C4805: '==' : unsafe mix of type 'bool' and type 'float' in
>operation
>
>Hvorfor får jeg de warnings, jeg har klippet ind i ovenstående udklip af
>kode?
>Det undrer mig, at det kun er for to af linierne, jeg får warnings.
Hvis man skriver "if(a == b == c)", så er der ret stor sandsynlighed[1]
for at man har misforstået et eller andet...
Fx: a=2, b=3, c=4:
if(a==b==c)
if(2==3==4)
Der evalueres fra venste mod højre, altså:
if((2==3)==4)
2==3 er falsk, altså 0:
if(0==4)
0==4 er falsk, og if'en udføres ikke.
Hvis det ikke forklarer problemet, så lad os prøve med a=5,b=5,c=5:
if(a==b==c)
if(5==5==5)
fra venstre:
if((5==5)==5)
5==5 er sand, altså 1:
if(1==5)
1==5 er falsk, og if'en udføres ikke.
Mvh
Kent
[1] Der er ikke noget generelt forkert i a==b==c, men det er brugbart i
MEGET FÅ tilfælde.
--
http://www.celebrityshine.com/~kfr/ - sidste billede: garden.png