/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Warnings hvorfor
Fra : Lisbet Kaas Petersen


Dato : 25-04-01 18:35

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.

--
Bye
ICQ 113181477



 
 
Kent Friis (25-04-2001)
Kommentar
Fra : Kent Friis


Dato : 25-04-01 19:46

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

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste