Das mit der Initialisierung hab ich glatt übersehen.
Die Variante mit der for( ; ; ) war mir unbekannt - wieder was dazu gelernt.
Vermutlich kommt es auch auf den Compiler an, was der draus macht.

Bei einer If Anweisung sind bei den Code Templates nach der geschweiften Klammer immer ";" dran - Jedenfalls bei meinem Compiler.
Wenn die Entwickler von Compiler Software sowas machen, dürfte es nicht ganz verkehrt sein ?!

CodeVision verwendet für die Haupschleife nur die while(1) Variante.
Das return 0 hab ich rausgenommen, wenn Dir das aufgefallen ist, weil es ja keinen Sinn macht, ohne eine Funktion aufgerufen zu haben.
Anscheinend ist das aber wieder Compiler abhängig.

Die Anweisung int main(void) kommt mir auch etwas seltsam vor.
Sollte es nicht void main(void) heissen ?