Re: Fehler bei Vergleichsoperation? Kategorie: Programmierung C (von PeterS - 10.03.2012 13:31) | |
Als Antwort auf Fehler bei Vergleichsoperation? von Markus V - 9.03.2012 20:20
| |
> Hallo, ich bin neu im Forum, habe folgendes Problem entdeckt. > Ich lese aus EEProm eine word Variable a ein (65535), da noch nicht in EEProm geschrieben wurde. > Bei Abfrage if (a > 5000) kommt als Ergebnis 0 heraus und die Abfrage wird übergangen. > Ich verstehe nicht warum, oder habe ich einen Denkfehler.Kann mir jemand weiterhelfen? > > Grü�e Markus Hallo Markus, bitte schreib "5000U" um dem Compiler zu signalisieren, das die 5000 ein "word" sein soll, und kein "int". Bei einem binären Ausdruck (z.B. a>b ), wird wenn einer der Operatoren nicht vom gleichen Typ ist wieder der andere, auf den höheren Typ konvertiert. Ist also ein Operator "word" und der andere "int" wird das "word" in ein "int" konvertiert. Ein int von 65535 ist aber -1, und daher kleiner als 5000. Ist ein wenig kompliziert, aber das sind die Regeln wie in C Typen konvertiert werden. Gruss Peter | |
Antwort schreiben Antworten: Re: Fehler bei Vergleichsoperation? (von Markus V - 10.03.2012 16:14) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum