Forum: Mikrocontroller und Digitale Elektronik Modulo Operator in C --- Schleife


von Hinz und Kunz (Gast)


Lesenswert?

Hallo Leute,

in der Steinzeit habe ich mal in einem uC mit Modulo gearbeitet, und 
damit eine Schleife gebaut, die immer 2 1 0 2 1 0 2 1 0 usw. abarbeitet. 
Also immer oben anfängt, durchläuft, und nach dem letzten element wieder 
von vorne beginnt.

Leider ist dieser Teil meines Gehirns anscheinend schon wegdiffundiert, 
so daß ich mich nicht mehr erinnern kann wie ich das in C gemacht habe.

Kann mir das nochmal jemand kurz erklären ?

Danke

von Falk B. (falk)


Lesenswert?

@  Hinz und Kunz (Gast)

>in der Steinzeit habe ich mal in einem uC mit Modulo gearbeitet, und
>damit eine Schleife gebaut, die immer 2 1 0 2 1 0 2 1 0 usw. abarbeitet.
>Also immer oben anfängt, durchläuft, und nach dem letzten element wieder
>von vorne beginnt.
1
for (i=100; i>=0; i--) {
2
  index = i % 3;
3
}

MFG
Falk

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Hinz und Kunz schrieb:
> Modulo
> in C
Google mal nach "modulo in c"...

von Karl H. (kbuchegg)


Lesenswert?

Vielleicht hast du die Schleife ja auch immer

0, 1, 2, 0, 1, 2, 0, 1, 2, .....

zählen lassem und den Wert den du dann tatsächlich verwendest, mittels 2 
- i brechnet.

  uint8_t i = 0;

  while( 1 ) {
    i = ( i + 1 ) % 3;
    Wert = 2 - i;
    printf( "%d\n", Wert );
  }

von huhu (Gast)


Lesenswert?

und was passiert bei 255 -> 0 bei dem überlauf?
252 % 3 = 0
253 % 3 = 1
254 % 3 = 2
255 % 3 = 0
0   % 3 = 0
1   % 3 = 1

ergibt 0 1 2 0 0 1 ...

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

huhu schrieb:
> und was passiert bei 255 -> 0 bei dem überlauf?
Dieser Wert 255 tritt niemals auf...
>>     i = ( i + 1 ) % 3;

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
Noch kein Account? Hier anmelden.