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........................ .....................
Welchen Datentyp haben C, h, a, b und L? Sollte das "unsigned int" sein, sind alle Vergleiche >= 0 ziemlich albern. Was spricht dagegen, den Quelltext zu formatieren und von völlig unnötigen Klammern zu befreien? Das würde das Lesen erleichtern ...
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
es sind alle vom typ int (nicht unsigned...dass is mir schon klar dass dass nicht funktionieren würde
ich verwende einen C compiler für die 18er serie der frima hi-tec(pic 18f252)
Hmm ... Sicher das er in das zweite if nicht reinspringt? Woran hast Du das gesehen (Debugger?), denn deine Funktion liefert in dem Fall keinen definierten Wert zurück.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.