简单的C++阶乘程序

im2*_*hae 2 c++ integer factorial while-loop

作为家庭作业,我需要一个读取非负整数的程序,并计算并打印其阶乘.到目前为止我编写了代码,但如果我尝试输入50!结果为0.它适用于较小的数字.任何帮助将非常感激.

#include <iostream>

using namespace std;

int main()
{
    int counter = 1;
    int number;

    cout << "Please enter a number: ";
    cin >> number;

    int factorial = number;
    while (counter != number)
    {
        factorial = factorial * (number - counter);
        counter++;

    }

    cout << "The factorial of " << number << "! is: " << factorial << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

yiz*_*lez 9

50!30414093201713378043612608166064768844377641568960512000000000000,对于一个int过于庞大.由于整数溢出,结果为0.

  • 由于整数溢出......以及50的事实!可以被2 ^ 32整除. (3认同)
  • @ im2shae注意50!如果你需要精度,我会建议使用BigInteger类. (2认同)