2017-04-15 11 views
-1

私は、数値の階乗を計算するプログラムを変更して、ユーザーが数字「0」を入力したときにプログラムが終了するようにしています。ここでは、コードは次のとおりです。Whileループエラー:「初期化されていないローカル変数が使用されました」

エラーC4700:

#include <iomanip> 
#include <iostream> 
using namespace std; 

int main() 
{ 
    unsigned int numb; 
    unsigned long fact = 1; 

    while (numb > 0) 
    { 


     cout << "Enter a number: "; 
     cin >> numb; 

     for (int j = numb; j > 0; j--) 
     { 
      fact *= j; 
      cout << "Factorial is " << fact << endl; 

     } 
    } 

    return 0; 
} 

しかし、私はこのエラーメッセージを取得して得続ける初期化されていないローカル変数「麻痺は」私は間違って何をやっている

を使用しましたか?

+3

あなたは 'numb'を初期化していません。そのエラーはかなり明確です。 – harold

+0

これは実際のエラーでもありません。どのコンパイラを使用していますか? –

答えて

1
unsigned int numb; 
unsigned long fact = 1; 

while (numb > 0) 

この式を最初にヒットしたときの値は、numbですか?コンパイラはどちらも知らない。

0

私が入る前に無感覚初期化するために、whileループの前に

cout << "Enter a number: ";

cin >> numb;

を置くところ。その後、既存のcout、cin文をループの最後に移動します。

0

あなたは(あなたの変数で)このようにしなければなりませんので、階乗作りたい場合は、次のループでカウンタ減少カウンタ(--j) 3乗と 1. GIVE番号 2.ループ。 4.ループの後、結果(事実)を表示します。

#include <iostream> 
using namespace std; 

int main() 
{ 
    unsigned int numb; 
    unsigned long fact = 1; 
    cout << "Enter a number: "; 
    cin >> numb; 
    for (int j = numb; j > 0; --j) 
    { 
     fact *= j; 
    } 
    cout << "Factorial is " << fact << endl; 
    return 0; 
} 
関連する問題