Problem mit 32Bit Variablen

OP #1042064
Hallo!

Bei mir klappt absolut kein vernünftiges Arbeiten mit 32Bit Variablen ( 
unsigned long, uint32_t )

Beispiel:

uint32_t foo;
foo = (1<<18);

sollte ja eigentlich gehen
Compiler sagt:
warning: left shift count >= width of type

Wie kann das sein? Egal was ich mach, ich kann nur die ersten 16bit 
erreichen, der Rest existiert quasi gar nicht.

Vielen Dank!

rralf
OP #1042142
Heil am Sack.
Ich hab mir heute stundenlang den Kopf darüber zerschlagen warum das 
nicht geht, und ich hab mir sowas in der Art schon fast gedacht.

Ich wollte von meinem Computer per Uart eine 32Bit Variable auf den AVR 
übertragen, also hab ich die am PC in 4Bytes gesplittet und die auf dem 
AVR rübergeschickt, welcher die dann wieder zusammenbauen sollte. 16Bits 
gingen wunderbar, aber was drüber war ging nicht.

Würde dann folgender Code funktionieren ( am AVR ):
1
unsigned char bytes[4];
2
bytes = ..... // bytes soll jetzt mal schon die richtigen werte enthalten.
3
unsigned long foo;
4

5
foo = (unsigned long)bytes[0] | (unsigned long)bytes[1]<<8 | (unsigned long)bytes[2]<<16UL | (unsigned long)bytes[3]<<24UL;

Tausend Dank!

Ralf
#1042173
@ Ralf Ramsauer (rralf)

>Und wenn ich dann b fülle steht in l automatisch der long wert oder was?

Ja, denn die Variablen liegen "übereinander" an der gleichen Adresse, 
NICHT hintereinander wie in einem stuct.

MfG
Falk

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 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.