Die while schleife funktioniert nicht denke ich. Jedenfall fehlt dort einer "{" klammern. Wie du das compiliert gekriegen hat ohne warnung ist mich einer rädsel.
Klar geht sowas! Er führt dann in einer unendlichen Schleife den nächsten Befehl nach while aus. "while(1) 1+1;" ist z.B. auch gültig, aber sinnlos.

Die erste "return 0;" gehört dort im mitten auch nicht. Die "return 0;" am ende deines program reichtst.
Stimmt, aber in seinem Fall kommt er da eh erst garnicht hin.