Hi, Kann man in C eine for-Schleife die von 0 bis 255 gehen soll programmieren, wenn die Schleifen-Variable selber vom Typ unsigned Char ist? for(unsigned char n=0;n <= 255;n++){} kommt nie zum Ende!!!
Nein, und natürlich terminiert das da oben nie. Ein unsigned char kann nunmal nur Werte von 0 bis 255 annehmen, welcher davon sollte denn größer sein als 255?
Weil deine Zählvariable überläuft und wahrscheinlich wieder bei 0 startet. Unsigned char geht von 0-255 du zählst aber mit <=255 bis 256. Das = muss weg, dann sollte es gehen.
Nicht "wahrscheinlich". Dem ist so. Und mit "<" wäre ihm auch nicht geholfen, weil er möchte, daß die Zählvariable 255 einschließt.
Hallo, ich würde dann eine Do - While - Schleife verwenden !
1 | uint8_t n = 0; |
2 | do { |
3 | // {do some thing}
|
4 | n++; |
5 | } while (n != 0); |
:
Bearbeitet durch User
Wer suchet schrieb: > Hi, > Kann man in C eine for-Schleife die von 0 bis 255 gehen soll > programmieren, wenn die Schleifen-Variable selber vom Typ unsigned Char > ist? > for(unsigned char n=0;n <= 255;n++){} > kommt nie zum Ende!!! Man kann:
1 | ...
|
2 | uint8_t erster_durchlauf; |
3 | uint8_t n; |
4 | |
5 | for (erster_durchlauf = 1, n = 0; (erster_durchlauf != 0) || (n != 0); n++) { |
6 | erster_durchlauf = 0; |
7 | ....
|
8 | }
|
Bernhard
@Berhard, warum so kompliziert :-)
1 | unsigned char n; |
2 | |
3 | for(n=0;;n++) { |
4 | printf("n=%d\n",n); |
5 | if(n==255) break; |
6 | } |
Gruss Uwe
Wie wäre es mit for(unsigned char n=0;n;n++){} (natürlich wird angenommen, dass Dein Compiler den 'richtigen' Überlauf durchführt)
Fred schrieb: > Warum so kompliziert? > > for(unsigned int n=0;n <= 255;n++){} und gut ist. Schon wieder der 1. April?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.