Unterschied while() und do {} while()

Gast #179648
Lesenswert?

Nein

Das sind zwei unterschiedliche Schleifenarten. Das eine ist eine
kopfgestuerte Schleife, das andere eine fußgesteuerte Schleife.

Sprich bei

do
{
//Befehl
}while()

hier wird der befehl mindestens ein mal ausgeführt bevor die
Abbruchbedinung abgefragt wird

bei

while()
{
//Befehl
}

kann es sein das der Befehl nie ausgeführt wird.


Grüßle Jochen
Gast #179649
Lesenswert?

Das ist in der Tat ein Unterschied:

  while (expression) {statement}

ist eine sogenannte "pre-check-loop". Das
Schleifenfortsetzungskriterium wird vor dem Schleifendurchlauf geprüft.
Trifft das Fortsetzungskriterium gleich von Anfang an nicht zu, wird die
Schleife kein einziges Mal durchlaufen.

  do {statement} while (expression)

ist eine "post-check-loop" - die Schleife wird durchlaufen und danach
wird das Schleifenfortsetzungskriterium geprüft.
Somit wird diese Schleife mindestens einmal durchlaufen.

In Struktogrammschreibweise:

  +-----------------+
  | Kriterium       |
  |  +--------------+
  |  |              |
  |  |              |
  +--+--------------+

und

  +--+--------------+
  |  |              |
  |  |              |
  |  +--------------+
  | Kriterium       |
  +-----------------+
Gast #179650
Lesenswert?

Der von Euch aufgezeigte Unterschied ist einigermaßen klar. Ich meinte
in diesem Falle aber speziell den Einsatz in der avr-libc mit
"loop_until_bit_is_set" oder dem Gegenspieler "_clear". Da SOLLTE
es doch eigentlich egal sein, ob er die Bedingung vor oder nach der
expression prüft. Da liegt mein "Problem", da ich mittlerweile bei
vielen Sachen in C einen "tieferen Sinn" zu übersehen fürchte. Und
einmal falsch gelernt läßt sich ja bekanntlich schwer wieder
korrigieren...

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