1. ホーム
  2. c++

[解決済み] whileループを停止させたい時に停止させることができない

2022-02-16 11:37:21

質問

を表示するwhileループを書きます。 userNum を 2 で割って(整数分割)、1に到達するまで。各数値の後にはスペースを入れる。の出力例 userNum = 20: 20 10 5 2 1

    #include <iostream> 
    using namespace std;
    
    int main() 
    {    
       int userNum = 0;
    
       userNum = 20;    
       cout << userNum << " ";
       while (userNum > 1)    
       {
          userNum = userNum/2;
          cout << userNum << " ";    
       }    
       cout << endl;
    
       return 0; 
    }

まではちゃんと割り切れるのですが、0になると終端せずに0になってしまいます。私は何を間違えているのでしょうか?

ありがとうございます。

解決方法は?

投稿されたコードは、あなたが期待したとおりの動作をします。

私は、良い習慣として、コードを少し変えることを提案するつもりです。

の代わりに

cout << userNum << " ";
while (userNum > 0)    
{
   userNum = userNum/2;
   cout << userNum << " ";    
}    

使用してください。

while (userNum > 1)    
{
   cout << userNum << " ";    
   userNum = userNum/2;
}    

一般的な原則は

while ( <conditional> )
{
   // Use the data

   // Change the data as the last operation in the loop.
}

A for ループは、これらのための自然なプレースホルダーを提供します。

for ( <initialize data>; <conditional>; <update data for next iteration> )
{
   // Use the data
} 

を使うように変更するとしたら for ループを使用することをお勧めします。

for ( userNum = 20; userNum > 0; userNum /= 2 )
{
   cout << userNum << " ";
}