如何使用cout正确打印long long int类型
C++: How to properly print out the long long int using cout
我用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
使用gmp
库编译代码需要-lgmpxx
和-lgmp
标志。
相关文章:
- "1L << count"是什么意思?如何使用超出"unsigned long long int? "范围的语句编号打印?
- 只读位置'__result.std::_Rb_tree_const_iterator<_Tp>::operator*<long long int>()'分配错误
- 错误:将"long int (*)[4]"分配给"long int [4][4]"时的类型不兼容
- 如何处理计算中的"unsigned long long int"?
- 为什么所有可能的整数都"true"在 C++ 的 if 语句内的 long int 范围内,而 0 不是?
- 为什么 int 到长 long int 的隐式转换在 C++ 中给出了意想不到的答案?
- C++为什么字符串的地址尽管是十六进制格式,但不能存储在 long int 变量中?
- "long int a=2"和"int a=2L"有什么区别?
- "long"和"long int"以及"long long"与"long long int"有什么区别
- map(long long int,long long int)不适用于key=1000 000 000(在long l
- C sqrt == long int
- 将函数从WCHAR_T数组转换为long int
- 性能从 'int' 显著降低到 'long int'
- 奇怪的并行循环行为 int v long int
- C++ Long Long INT - 64 位,此限制仅使用 64 位操作系统
- 二进制'operator%' 'long long int'类型的操作数无效
- long/int到UINT64的转换,并在C#上返回long-何时可以丢失数据
- "unsigned long int" c++ 中的最大值
- v[long long int] in C++
- C++ long long int