我编写了一个代码来获取C++中数字的阶乘。C++:如何使用cout正确输出long long int
这是代码。
#include <iostream>
using namespace std;
unsigned long long getFactorial(int);
int main(int argc, char **argv) {
int num = 5;
unsigned long long factorial = getFactorial(a);
cout << "Factorial of " << num << ": " << factorial << endl;
return 0;
}
unsigned long long getFactorial(int num) {
int i;
unsigned long long factorial = 1;
for(i=1; i<=num; i++) {
factorial *= i;
}
return factorial;
}
当我给你5到num
值,它正确地打印出正确的值,120。但是,当我给你更大的数字,例如100,它只是打印出0。我怎样才能修改代码来在控制台上正确输出结果?
一个uint64_t(8字节)可以容纳93左右! 100!太简单了。尝试小于92 !,也许只能使用无符号长整数,无整数或有符号数。 –
对于更大的阶乘,请查看gmp(扩展精度算术)。它可以处理1000 !,并产生一个大字符串作为结果。 –
你是如何得出结论92的!可以适合一个64位整数?它不能。 20!是限制。 – paddy