Moin Moin sagt mal, liebe Experten, gibt es eine Möglichkeit eine For-Schleife for(;;) zu verlassen (abzubrechen), sobald eine Bedingung über Interrupts erfüllt ist? Gruß
Hmm, also meinst du so etwas in der Art: for(;;) { befehl1; befehl2; ... if(bedingung True){break;} }
1 | volatile char bedingung = 1; |
2 | |
3 | SINAL(INTERRUPT) |
4 | {
|
5 | bedingung = 0; |
6 | }
|
7 | |
8 | |
9 | for( ; bedingung; ) |
10 | {
|
11 | tuwas(); |
12 | }
|
einfacher zu verstehen ist allerding ein "while(bedingung){...}"
Ja, das würde auch funktionieren, ist aber nicht unbedingt lesbarer. Es ist halt dann praktisch, wenn du nicht genau am Anfang oder Ende die Bedinung prüfen willst, sondern irgendwo mittendrin. Sonst -> while oder do...while
Lieber Schlunz, Uterschiede zwischen Deinem und Werners Beispiel: Deins: Der Schleifenkörper wird in jedem Falle einmal durchlaufen (auch wenn die Bedingung schon bei Schleifenanfang erfüllt ist), Werner: Der Schleifenkörper nie betreten wird, falls die Bedingung schon zu Beginn erfüllt ist. Außerdem ist es bei der if-break-Variante im Schleifenkörper möglich, Anweisungen vor und nach dem if-Statment zu gruppieren, so dass manche in jedem Falle ausgeführt werden, während andere bei gültiger Bedingung nicht mehr ausgeführt werden: for(;;) { befehl1; befehl2; ... if(bedingung True){break;} befehl3; befehl4; } Gruß, Michael
Hallo Michael, besten Dank! Das ist eine herrliche Erklärung. Damit kann ich arbeiten :-) Vielen Dank nochmals an Alle Gruß
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.