C++ While循环错误:";使用未初始化的局部变量;

C++ While循环错误:";使用未初始化的局部变量;,c++,for-loop,while-loop,C++,For Loop,While Loop,我正在做一个赋值,修改一个计算数字阶乘的程序,这样当用户输入数字“0”时程序就会终止。代码如下: #include <iomanip> #include <iostream> using namespace std; int main() { unsigned int numb; unsigned long fact = 1; while (numb > 0) { cout << "Enter a

我正在做一个赋值,修改一个计算数字阶乘的程序,这样当用户输入数字“0”时程序就会终止。代码如下:

#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;
}
#包括
#包括
使用名称空间std;
int main()
{
无符号整数numb;
无符号长事实=1;
而(麻木>0)
{
不能>麻木;
对于(int j=numb;j>0;j--)
{
事实*=j;
库特
当你第一次点击这个表达式时,
numb
的值是多少?编译器也不知道

不能>麻木


在while循环之前,在进入之前初始化numb。然后将现有的cout、cin语句移动到循环的末尾。

如果要进行阶乘,则必须这样进行(在变量中): 1.说出电话号码 2.带缩减计数器的环路(--j) 3.在循环中乘以计数器。 4.循环后,显示结果(事实)

#包括
使用名称空间std;
int main()
{
无符号整数numb;
无符号长事实=1;
不能>麻木;
对于(int j=numb;j>0;--j)
{
事实*=j;
}

你不能不初始化
numb
。这个错误很明显。这甚至不是一个真正的错误。你在使用什么编译器?
unsigned int numb;
unsigned long fact = 1;

while (numb > 0)
#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;
}