Frage zu C - Der Schleifenkopf for( ; ;) ist?

... komplette Frage anzeigen

6 Antworten

for(;;) ist die klassische Endlosschleife für C, manche verwenden auch while(1), Geschmackssache, beides schöner als goto Label, auch wenn beides dahingehend übersetzt wird (bzw. in asm jmp).

also b) und c) sind richtig. a) ist falsch, zumindest der Code Block C-Compiler lässt diese Schleife zu und in einem Teil der Lehrbücher wird for(;;) als Endlosschleife verwendet.

http://stackoverflow.com/questions/1401159/for-or-while-true-which-is-the-correct-c-sharp-infinite-loop

Warum?

die for-Syntax: for(Initial-Anweisungen; Bedingung; Loop-Anweisungen)

  • Initial-Anweisungen: Sie werden einmal am Anfang der For-Schleife ausgeführt.
  • Bedingung: Die For-Schleife wird ausgeführt, solange der Ausdruck nicht false ist, die Prüfung erfolgt nach der Initial-Anweisung. Steht nichts, gilt dies als true. Ok, das muss man wissen.
  • Loop-Anweisung: Wird jedesmal am Ende der Schleife vor der Bedingung ausgeführt.
Antwort bewerten Vielen Dank für Deine Bewertung

gerade mal mit Java und C# ausprobiert.

Es wird einfach eine Endlosschleife erzeugt wodurch b und c stimmen sollte.

Also zumindest bei Java und C#.

Antwort bewerten Vielen Dank für Deine Bewertung

for ist 

äquivalent zu while

und solange bei for  keine Bedingung angegeben wird ist es eine Endlosschleife.

for (h = 0; h < 20; ++h)
{

solange h < 20 ist wird die schleife durchlaufen, bei jeden durchlauf ist h = h+1,

also läuft die schleife 20 mal im maximum.

unterschiede:

For ---> mache etwas BIS die Bedingung erfüllt ist 

while mache etwas solange die Bedingung erfüllt ist

Antwort bewerten Vielen Dank für Deine Bewertung

NoHumanBeing 22.02.2017, 15:24

For ---> mache etwas BIS die Bedingung erfüllt ist

while mache etwas solange die Bedingung erfüllt ist

Nein.

For läuft auch, solange die Bedingung erfüllt ist.

for (i = 0; i < 10; i++) { ... }

Läuft solange i kleiner als 10 ist, also für i = 0, 1, 2, 3, 4, 5, 6, 7, 8 und 9. Heißt sobald es 10 erreicht, bricht er ab und durchläuft den Schleifenkörper nicht mehr.

1
nobytree2 23.02.2017, 11:44
@NoHumanBeing

Korrekt, dabei schreibt invert so schön noch "for ist äquivalent zu while", wobei for noch Initial-Anweisungen und Loopanweisungen erlaubt.

Im Prinzip muss man als Programmier aus dem C-For-Syntax erst eine For-Schleife machen (anders als in Pascal und in Basic, wo ich gezwungen bin, for als solches zu verwenden).

1

b und c sollte richtig sein.

Antwort bewerten Vielen Dank für Deine Bewertung

Die Lösung lautet b) und c)

Antwort bewerten Vielen Dank für Deine Bewertung

Hat sich halt jemand bei der C-Syntax ausgedacht, dass das Leerlassen des Bedingungsteils einfach für eine Endlosschleife steht.

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?