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 Markus V - 10.03.2012 16:14)
Als Antwort auf Re: Fehler bei Vergleichsoperation? von PeterS - 10.03.2012 13:31
Ich nutze:
C-Control Pro Mega32
> > 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

Hallo Peter,

danke für die Antwort, habe mir so etwas ähnliches gedacht, wusste nur nicht warum und wie ich
es umgehen kann. Danke noch mal.

Gruss Markus


    Antwort schreiben


Antworten: