"seltsames" Verhalten im if

Gast #5127352
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 :-)
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

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.