whileの抜け方がbreakなのは普通だから
forならランタイムエラーにならないというのはエラーでないだけで実行結果間違ってるだけでは?