Forum: Compiler & IDEs Vergleich klappt nicht


von Gast (Gast)


Lesenswert?

hallo,

ich habe ein uint16_t Variable[8] definiert und vergleiche die Variable 
an der stelle1 mit einigen Parameter. Ich habe beliebig Werte für diese 
Variable  gewählt, aber es geht immer in der erste if Anweisung.
Kann jemanden mir sagen, wo das Problem liegt.

void function( uint16_t Var[8])
{
if((0x300) < Variable[1] <= (0X37F))
{
functionx();
}
else if( (0x380) < Variable[1] <= (0X3FF))
{
functiony();
}
else if( (0x0) < Variable[1] <= (0X7F) )
{
functionz();
}
else
{
functionk();
}
}

Danke euch

von (prx) A. K. (prx)


Lesenswert?

Gast wrote:

> if((0x300) < Variable[1] <= (0X37F))

entspricht ungefähr:

int temp = (0x300 < Variable[1]); // ergibt 0 oder 1
if (temp <= 0x37F) // also immer

von Klaus (Gast)


Lesenswert?

Korrekt. Vergleiche funktionieren so nicht, da der erste Vergleich immer 
1 oder 0 liefert.

Zum Verkennten von Vergleichen logische Operatoren verwenden:
1
if( (0x300 < Variable[1]) && (Variable[1] <= (0X37F) )

von Alex (Gast)


Lesenswert?

else if( (0x380) < Variable[1] <= (0X3FF))

==>

else if ((0x380 < Variable[1]) && (Variable[1] <= 0x3FF))

von Gast (Gast)


Lesenswert?

danke an alle

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
Noch kein Account? Hier anmelden.