Probleme mit 32 bit Variablen

Persönliche Seite
Probier mal
1
if (var1 & (1<<28UL))
2
...

Hintergrund: Eine 1 um 28 (Binär-)Stellen nach links verschoben passt 
nicht in einen Integer (16Bit beim AVR). Und Jede Zahlenkonstante ist 
erstmal ein Integer für den Compiler. Mit UL hinter der Konstante sagst 
du dem Compiler, dass es sich um einen unsigned-long typ handelt (32Bit 
beim AVR).
Gast
Halt falsch!


>Operanden als Zieldatentyp der Rechnung angenommen wird.

heisst: "integral promotion" wenn char -> int
heisst "integral conversion" wenn int16 -> int32
Gast
wieder falsch! So wars gemeint:

unsigned char -> unsigned int16 (promotion)
char -> unsigned int16 (conversion)

Innerhalb der Signaturen bei C++ wird's für den Menschen richtig 
kompliziert.
Aber gut, dass es mal angesprochen wurde...
Gast
> Wenn schon, dann auch richtig schreiben. Das hat nix mit "Integralen"
> oder so zu tun, sondern mit ganzzahligen Werten (engl. integer values)

... oder "integral values" ...

> und es heißt dementsprechend integer promotion...

In C ja. In C++ heißt es "integral promotion".
Gast
> Aha, ist das tatsächlich so?

Ja. In C++ unterscheidet man zwischen der Menge der "integer values" und 
der der "integral values". Letzere beinhaltet neben ersteren noch ein 
paar weitere Typen wie z.B. bool. Da die "promotions" auch für diese 
gelten, heißen sie dort "integral promotions".

> Frohe Weihnachten noch.

Das wünsche ich dir auch.

Antwort schreiben

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