>>331 単純に for( ; ; ){} に較べて読みにくくないかと。

for( ;<<ループの終了条件>>; ){ p() } は
for( ;<<ループの終了条件>>; p()){} の内、必要な情報だけ第三引数に抽出することができるが、

while(<<ループの終了条件>>) { p() } だと
どんな情報に着目するべきかは終了条件以外のヒントがない。
それでwhile()は難しいかと。