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
Gast wrote:
> if((0x300) < Variable[1] <= (0X37F))
entspricht ungefähr:
int temp = (0x300 < Variable[1]); // ergibt 0 oder 1
if (temp <= 0x37F) // also immer
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) ) |
else if( (0x380) < Variable[1] <= (0X3FF)) ==> else if ((0x380 < Variable[1]) && (Variable[1] <= 0x3FF))
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.