while(1) oder for(;;)
-
supertux schrieb:
Ich gebe zu, dass ich while(1) für Endlosschleifen nehme, weil das für mich optisch/sematisch schneller klar ist, dass es sich um eine Endlosschleife handelt.
mich stören dabei die warnings des compilers. obwohl es beabsichtigt ist, sagt er mir 'condition always true'. da hat er ja recht. theoretisch könnte es ein fehler sein. daher nehme ich lieber for(;;). das schluckt er, ohne zu klagen.
-
ich habe eine solche Warnung noch nie gesehen (zumidnest bei while(1), bei if(0) schon). Mit welchen Flags spuckt gcc diese Warnungen aus?
-
Vor allem stelle ich mir die Frage warum nicht auch bei
for (;;)
irgendwann eine Warnung kommen soll.
-
Tim schrieb:
Vor allem stelle ich mir die Frage warum nicht auch bei
for (;;)
irgendwann eine Warnung kommen soll.Weil das die Definition der Endlosschleife ist - wie du dem C Standard entnehmen kannst.
-
Ich frage gerne nochmal: wo?
-
Tim schrieb:
Vor allem stelle ich mir die Frage warum nicht auch bei
for (;;)
irgendwann eine Warnung kommen soll.Es wäre ja auch schade, wenn man keine Möglichkeit hätte, im Sinne des Compilers eine Endlosschleife zu notieren (Stichwort Mikrocontroller).
P.S.: Übrigens könnte das der Thread mit den meisten
- Smileys werden!
-
_matze schrieb:
Tim schrieb:
Vor allem stelle ich mir die Frage warum nicht auch bei
for (;;)
irgendwann eine Warnung kommen soll.Es wäre ja auch schade, wenn man keine Möglichkeit hätte, im Sinne des Compilers eine Endlosschleife zu notieren (Stichwort Mikrocontroller).
Erstens ist das keine Erklärung warum bei for(;;) keine Warnung kommen sollte, zweitens ist while(true) trotzdem genauso möglich und drittens, was sind diese ominösen "Mikrocontroller"?
-
Tim schrieb:
Erstens ist das keine Erklärung warum bei for(;;) keine Warnung kommen sollte, zweitens ist while(true) trotzdem genauso möglich
Na ja, warum ausgerechnet for(;;) in Ordnung sein soll und while(1) oder while(true) nicht, kann ich auch nicht nachvollziehen.
Tim schrieb:
und drittens, was sind diese ominösen "Mikrocontroller"?
Wenn die Frage ernst gemeint ist: http://www.mikrocontroller.net/
-
Na wie oft denn noch for(;;) ist als ein Schlüsselwort für eine Endlosschleife zu verstehen oder warum meint ihr, dass das Ding ohne Fehler kompiliert? Das Weglassen der Bedingung bedeutet für den Compiler "hier will ich eine Schleife die nie abbricht" und das ist ja keineswegs offensichtlich, denn if() wird ja auch nicht als if(1) identifiziert. Das Verhalten ist durch den Standard geregelt.
-
supertux schrieb:
ich habe eine solche Warnung noch nie gesehen (zumidnest bei while(1), bei if(0) schon). Mit welchen Flags spuckt gcc diese Warnungen aus?
das ist'n metrowerks/freescale compiler. der ist ziemlich 'verbose' mit seinen warnings. bemerkt auch sowas wie if (a&0xff > 1000) <-- always false
Tim schrieb:
Vor allem stelle ich mir die Frage warum nicht auch bei
for (;;)
irgendwann eine Warnung kommen soll.weil kein vergleich drin steckt? bei for(;1==1;) motzt er jedenfalls wieder rum.
-
Helferlein schrieb:
Na wie oft denn noch for(;;) ist als ein Schlüsselwort für eine Endlosschleife zu verstehen oder warum meint ihr, dass das Ding ohne Fehler kompiliert? Das Weglassen der Bedingung bedeutet für den Compiler "hier will ich eine Schleife die nie abbricht" und das ist ja keineswegs offensichtlich, denn if() wird ja auch nicht als if(1) identifiziert. Das Verhalten ist durch den Standard geregelt.
O.K. das war deutlich. Ich erkenne Trolle z.Z. nicht mehr so schnell
-
Tim schrieb:
Helferlein schrieb:
Na wie oft denn noch for(;;) ist als ein Schlüsselwort für eine Endlosschleife zu verstehen oder warum meint ihr, dass das Ding ohne Fehler kompiliert? Das Weglassen der Bedingung bedeutet für den Compiler "hier will ich eine Schleife die nie abbricht" und das ist ja keineswegs offensichtlich, denn if() wird ja auch nicht als if(1) identifiziert. Das Verhalten ist durch den Standard geregelt.
O.K. das war deutlich. Ich erkenne Trolle z.Z. nicht mehr so schnell
Ach ja immer wieder herrlich, wenn einem die Argumente ausgehen ist der Unreg halt ein Troll
-
Sorry, aber von dir kommen keine Argumente. Behauptungen sind keine Argumente. Ich will Belege. Solange du die nicht bringst bist du ein Troll oder nicht gerade der Held der Programmierwelt... Und jetzt bring Argumente oder troll dich.