for-Schleife und dekrementieren

Persönliche Seite #735538
Lesenswert?

Das liegt daran, dass "long" ein signed Datentyp ist. Und da deine 
For-Schleife solange läuft, wie die Iterationsvariable größer oder 
gleich 0 ist (Also die Schleife nur abbricht, wenn die Variable auf -1 
dekrementiert wird), funktioniert das nicht mit einem unsigned-Typ (wie 
der uint8_t).

Das "Sign" ist in diesem Fall das Vorzeichen. Ein unsigned-Typ hat also 
kein Vorzeichen.
Persönliche Seite #736014
Lesenswert?

Nee, nicht richtig. -1 kann nie rauskommen, weil i im ersten Beispiel 
ein unsigned Datentyp ist, d.h. ohne Vorzeichen, d.h. immer positiv oder 
gleich null. Du hättest wenn i gleich 0 ist in der nächsten Schleife 
beim Dekrementieren einen Überlauf und i wäre 255 (wegen 8-Bit in 
uint8_t). Du hast dann mit der ersten for-Schleife eine unsaubere 
Endlosschleife produziert.

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