Die IF abfrage die nicht so macht wie sie soll....

Gast #329078
Lesenswert?

ch stehe vor einem rätsel...wenn ihr euch den code anseht erkennt ihr
dass abgefragt wird ob A positiv ist und wenn ja soll er abfragen ob B
positiv ist, das erstere schafft er auch auch noch nur beim zweiten,
springt er einfahc aus dem unterprogramm raus...
hat jemand eine ahnung weiso
also ich habe
A mit 500 definiert und B mit 200 um sicher zu gehen dass beide positiv
sind
source:
int auswertung(C,h,a,b,L){
if((a>=0))
{
if((b>=0))
{
if((L >= 95)) return 0x31; //WEIß
if((h <= 41)) {if((C<=15)) return 0x42; //Braun
if((h <= 10 && L>=78)) return 0x35; //ROSA
return 0x34; //ROT
}
if(h <61 ) {
if(C<31) return 0x42; //Braun
return 0x33; //Orange
}
if(h <90 ) {
if(C<20) return 0x42; //Braun
return 0x32; //Gelb
}
}
}
else if........................ .....................
Gast #329080
Lesenswert?

Jo, beim ausklabustern mußte man genau gucken, wo noch Verschachtelungen
sind.

Falls b vom Typ char ist, dann ist klar, warum das schiefläuft,
andernfalls wär's erstmal unerklärlich für mich.
Der Typ char, wird mit Vorzeichen interpretiert und hat daher nur einen
Wertebereich von -128 bis 127. Da passen deine 200 nicht mehr hinein und
werden als -57 interpretiert. Änder dann einfach mal den Typ in (signed)
int.

Rufus: Wäre wirklich albern, wenn das unsigned int wäre, aber dann
dürfte die zweite IF-Anweisung mit seinem Testwert 200 nicht
schieflaufen.

Bis denne, Andreas

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren