Warum verhalten sich (;;) Schleifen wie Endlosschleifen?

Die Antworten auf eine aktuelle Frage zufor(;;){} Schleifen Was macht eine for (;;) -Schleif) schien mir nichts zu beantworten, deshalb dachte ich, ich würde versuchen, die Frage ein wenig zu verfeinern. Insbesondere über das Wissen, dassfor Schleifen ohne Bedingungen sind Endlosschleifen, ich würde gerne wissen, warum sie Endlosschleifen sind.

In der Anweisungfor (;_;){}, das_ ist ein bedingter Ausdruck. Meine erste Vermutung wäre, dass ein leerer Ausdruck zu @ ausgewertet werden könnt0 oderNULL. Aber wenn Sie testen:

for (;;){}

ist eine Endlosschleife, wie jeder betont hat.

for (;1;){}

ist eine Endlosschleife.

Aber keiner dieser Schleifenkörper wird ausgeführt:

for (;0;){}
for (;NULL;){}

Daher scheint der leere bedingte Ausdruck auch nicht als @ zu werte0 oderNULL.

Also, meine Frage: Ist das Verhalten desfor (;;){} Schleife ein Artefakt der Art und Weise, wie C Ausdrücke auswertet, oder ist es nur ein durch die Implementierung definierter Sonderfall, weil ein Schleifenkörper, der niemals ausgeführt wird, nicht sehr nützlich ist?

UPDATE: Nachdem ich die Kommentare und Antworten gelesen habe, stelle ich fest, dass meine Frage nicht so klar formuliert war, wie es hätte sein können. Ich nehme an, die Frage war zweifach:

Ist das Verhalten vonfor(;;){} Schleifen ergeben sich ausschließlich aus der Art und Weise, wie C Ausdrücke im Allgemeinen auswertet, oder ist dieses Verhalten spezifisch für die Art und Weise, wie C @ auswertefor Aussagen?

Warum wurde dieses Verhalten für @ gewählfor Schleifen ohne bedingte Ausdrücke?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage