Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

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)