Frage zum Kompiler (allgemein)

Gast #503409
Lesenswert?
• ▲
▼
Nein da wird nicht's verodert, die Befehle werden nacheinander 
ausgeführt. PORTB ist als Volatile definiert da es ein IO- oder 
CPU-Register ist..

PORTB = (1<<2); // => PORTB= 0b0000'0100
PORTB = (1<<5); // => PORTB= 0b0010'0000

MfG  Peter

Gast #503504
Lesenswert?
• ▲
▼
Wenn der Compiler da etwas verodern würde, wäre das grob falsch! Nach 
der zweiten Zuweisung darf (selbst wenn das Ziel der Zuweisung nicht 
volatile wäre) nichts mehr von der ersten Zuweisung da sein. 
Allerhöchstens könnte, wie Andreas schon anmerkte, die erste Anweisung 
komplett wegfallen, da sie auf das Endergebnis keine Auswirkung hat. 
Anders wäre das, wenn vor den "=" noch jeweils ein "|" stünde...
Gast #503699
Lesenswert?
• ▲
▼
Natürlich stimmt die nicht! Wenn Du einer Variable oder einem Register 
mit dem Zuweisungsoperator "=" einen Wert zuweist und direkt danach 
einen anderen, dann überschreibt der zweite den ersten. Das ist doch 
wohl völlig logisch, oder etwa nicht? Wenn Du schreibst "PORTB = 1 << 5" 
(um beim obigen Beispiel zu bleiben), dann steht nach der Zuweisung "1 
<< 5" in PORTB, und nichts anderes.

Solange da kein "|"-Operator steht, darf da gar nichts verodert werden. 
Weiß gar nicht, wie Armin da drauf gekommen ist...

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.