Was ist der genaue unterschied zwischen For und While schleifen in C?

3 Antworten

Die Konstrukte sind äquivalent.

Go beispielsweise hat nur eine for-Schleife, die verschiedene Ausprägungen annehmen kann.

for {
   // Endlosschleife (im Grunde ein "while (true)")
}

for condition {
   // solange condition == true ("while"-Äquivalent)
}

for i := 0; i < n; i++ {
   // n Durchläufe (klassische "for"-Schleife)
}

for i, elem := range arr {
   // über arr iterieren ("foreach"-Äquivalent)
}

In Sprachen, in denen es sowohl eine for-, als auch eine while-Schleife gibt, gilt:

  • Eine for-Schleife bringt eher zum Ausdruck, dass man man über eine Datenstruktur iteriert.
  • Eine while-Schleife bringt eher zum Ausdruck, dass man etwas tut, solange eine Bedingung erfüllt ist.

Ich kann aber auch mit einer while-Schleife über eine Datenstruktur iterieren oder eine for-Schleife laufen lassen, solange eine Bedingung erfüllt ist. Aber das würde man eher nicht "erwarten" und daher würde die Lesbarkeit / Verständlichkeit darunter leiden.

Auch eine fußgesteuerte Schleife ...

do {
   ...
} while (condition);

... lässt sich problemlos in eine kopfgesteuerte Schleife überführen.

/* C hat keinen Boolean-Datentyp. */
int firstIteration = -1;

while ((firstIteration) || (condition)) {
   ...
   firstIteration = 0;
}

Hey,

For-Schleifen werden als Zählerschleifen genutzt, also wenn vorher bereits definiert ist, wie oft diese ausgeführt wird (solange i < x oder wenn man über ein Array oder eine andere Datenstruktur iteriert.

While-Schleifen hingegen werden benutzt, wenn die Anzahl der durchläufe vorher nicht definiert ist.

Mfg Jannick (L1nd)

Woher ich das weiß:Hobby
Boizzen 
Fragesteller
 28.11.2021, 11:53

Hey JanMarcel01

ich habe eine for & eine while Schleife geschrieben verstehe aber nicht genau was du meintest das eine for Schleife genutzt wird wenn bekannt ist wie oft Sie ausgeführt wird und eine while Schleife benutzt wird wenn man nicht weis wie oft sie benutzt werden soll

ich schicke dir ein bild beide schleifen werden bis zur zahl "4" ausgeführt.

for (int a = 1; a < 5; a++){

  printf("%i\n",a);

}

printf("-------\n");

int b = 1;

while(b < 5){

  printf("%i\n",b);

  b++;

1
JanMarcel01  28.11.2021, 12:03
@Boizzen

In diesem Fall würde man eine For-Schleife nutzen, da die Anzahl bekannt ist

1
Von Experte ralphdieter bestätigt

Beide Konstrukte sind gleich mächtig. Eine For-Schleife

for( <init> ; <condition> ; <increment> ){
    <block>
}

Lässt sich umschreiben zu einer While-Schleife:

{
<init>
while( <condition> ){
    <block>
    <increment>
}
}

und umgekehrt.

ralphdieter  28.11.2021, 15:43

Es gibt nur einen subtilen Unterschied:

Ein continue im <block> überspringt in der while-Schleife das <increment>. In der for-Schleife wird es aber ausgeführt.

2
Destranix  28.11.2021, 15:48
@ralphdieter

Ja gut, das kann sein. Darauf muss man achten und jeweils passend reagieren.

1