"seltsames" Verhalten im if

Gast #5127352
Lesenswert?

Folgendes Szenario:

32bit Controller.

1. c-File
1
unsigned char val1 = 0;
2
unsigned char val2 = 0xFF;

2. c-File
1
extern unsigned char val1;
2
extern unsigned char val2;
3

4
if (val1 == ~val2)
5
{ STATEMENT_1 } else {STATEMENT_2}


Nach Abarbeiten des if stell ich fest dass STATEMENT_2 erreicht wurde.
Gewünscht hätt ich mir natürlich STATEMENT_1.
Durch wildes rumgecaste kann ich das Problem beheben.

Kann mir wer sagen wo mein Denkfehler ist?
Ich hab eine Vermutung, will aber hier nicht vorgreifen :-)
#5129083
Lesenswert?

Rolf M. schrieb:
> Yalu X. schrieb:
>> Sollte man Optimierungen nicht lieber dem Compiler überlassen? ;-)
>
> Naja, man muss ja nicht unbedingt zusätzliche unnötige Dinge einbauen,
> nur damit der Optimizer was zu tun hat.

Vielleicht hat man ja eine Source für 2 verschiedene Hardware-Versionen, 
dann ist es doch schön wenn der Compiler den nicht benötigten Teil 
rückstandsfrei entsorgt. Wenn z.B. die Datenpins eines LCD entweder 
nebeneinander am selben Port, oder wild verstreuht vorliegen und im 
ersten Fall offensichtlich eine optimierte Implementierung möglich ist.

Und nein, der Preprocesser ist nicht für alles die richtige Lösung.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren