gpt4 book ai didi

C++:如何使用 cout 正确打印出 long long int

转载 作者:行者123 更新时间:2023-11-28 05:29:25 24 4
gpt4 key购买 nike

我用 C++ 编写了一段代码来获取数字的阶乘。

这是代码。

 #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。我该如何修改在控制台上正确打印结果的代码?

最佳答案

现在我自己找到了答案。

通过使用 gmp库,处理大整数变得容易得多。

这是修改后的代码。

#include <iostream>
#include <gmpxx.h>

using namespace std;

mpz_class getFactorial(int);

int main(int argc, char **argv) {
int num = 100;
mpz_class factorial = getFactorial(num);

cout << "Factorial of " << num << ": " << factorial << endl;

return 0;
}

mpz_class getFactorial(int num) {
int i;
mpz_class factorial = 1;
for(i=1; i<=num; i++) {
factorial *= i;
}

return factorial;
}

为了使用gmp图书馆,我包括了<gmpxx.h>头文件。接下来我更改了 factorial 的数据类型getFactorial() 的变量和返回类型来自 unsigned long long 的函数至 mpz_class这是表示大整数的数据类型。

修改代码后,我使用以下标志使用 GCC 进行编译。

$gcc test.cpp -lstdc++ -lgmpxx -lgmp -o test

-lgmpxx-lgmp使用 gmp 编译代码需要标志图书馆。

现在它工作正常。

关于C++:如何使用 cout 正确打印出 long long int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39843710/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com