integer operation out of range warning

Gast #1979187
Lesenswert?

> LPC_GPIO1->FIOSET = (1 << 31);
> Warnungen:
> - integer operation result is out of range
> - integer operation resulted in a change of sign

Ich vermute jetzt einfach mal drauf los dass auf dem (ungenannten) 
Zielsystem der Integer zu klein ist (womöglich 16 Bits?). Caste die 1 in 
einen (ggf. unsigned) 32-Bit und es sollte klappern.

HTH
Gast #1979213
Lesenswert?

1 ist ein signed integer, wenn du den 31-mal verschiebst, setzt du das 
MSB und das Vorzeichen ändert sich. Deshalb warnt der compiler.
1u ist unsigned. Das lässt sich natürlich 31-mal schieben, ohne das sich 
das Vorzeichen (welches Vorzeichen?) ändert.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren