while ブロックを使用して何もしないのは悪いことですか?

まったくありません。K&R では、このような何もしないループが見られると思いますので、これはほぼ公式のものです。

個人的な好みの問題ですが、私は次のような何もしないループを好みます:

while(something());

ループであることを強調するために、別の行にセミコロンを入れることを好む人もいます:

while(something())
  ;

さらに、あなたが行ったように、何も入れずにブラケットを使用することを好む人もいます:

while(something())
{
}

すべて有効です。好きなスタイルを選んで、それを使い続けるだけです。


あなたの質問「whileブロックを使用して何もしないのは悪いことですか?」また、CPU サイクルの浪費という観点から回答される場合もあります。この場合、ユーザーが文字を入力するのを待つ間、プロセスはスリープ状態になるため、答えは「いいえ」です。

プロセスは、文字が入力された後にのみウェイクします。次にテストが実行され、テストに合格した場合 (つまり c ==' ')、プロセスは次の文字が入力されるまで再びスリープ状態になります。これは、スペース以外の文字が入力されるまで繰り返されます。


まったく問題ないと思います。

//skip all spaces
while ((c = getchar()) == ' ') {} 

この 1 行のコードが 1 つのことを行うことを明確にするためです。

または、次のように書きます:

while ((c = getchar()) == ' ') {
    //no processing required for spaces
}

コードの残りの形式と一致するようにします。

個人的には、私はのファンではありません

while ((c = getchar()) == ' ');

フォーマット。セミコロンを見落としやすいと思います。