left shift count >= width of type

Gast #1149203
Lesenswert?
• ▲
▼
Hi, ich habe folgende Fehlermeldung:
../Main.c:377: warning: left shift count >= width of type
Hier der Code dazu:

1
// Werte von Register Page 1 holen
2
    SPI_write_register(0b01111110,0x00000001);        // Stelle Register Page 1 ein
3

4
    if(measurement_mask_low && (0x00000001 << 31))      // Neue Page + Mask_low
5
    {
6
      measured[31] = SPI_read_register(0);
7
      measured_length++;
8
    }

Der Fehler ist bei folgender Zeile:

if(measurement_mask_low && (0x00000001 << 31))

measurement_mask_low ist als uint32_t definiert, warum funktioniert das 
nicht? Wenn ich das 0te Bit um 0 verschiebe, bleibt es ja beim 0ten Bit. 
Wenn ich es um 1 verschiebe, kommt es auf Bit 1. Dann muss doch beim 
verschieben um 31 auf Bit 31 kommen. Allerdings sagt es mir den 
Fehler... Ich kann maximal um 15 verschieben. Warum?
#1149211
Lesenswert?
• ▲
▼
Gast wrote:
> measurement_mask_low ist als uint32_t definiert,
Schön, 0x00000001 ist aber defaultmäßig ein int, da bringen auch die 
ganzen Nullen nix! Da musst Du dem Compiler schon explizit sagen, dass 
er das als unsigned long interpretieren soll. Schreib einfach 1UL da 
hin, und gut 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.