方法1:使用 long long 类型
long long 是64位整数,范围约为 -2^63 到 2^63-1(即 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807),可以存储 100000000000。

(图片来源网络,侵删)
#include <stdio.h>
int main() {
long long num = 100000000000; // 1000亿
printf("100000000000 = %lld\n", num);
return 0;
}
输出:
100000000000 = 100000000000
方法2:使用 unsigned long long
如果只需要非负数,可以用 unsigned long long,范围是 0 到 2^64-1(即 18,446,744,073,709,551,615)。
#include <stdio.h>
int main() {
unsigned long long num = 100000000000;
printf("100000000000 = %llu\n", num);
return 0;
}
输出:
100000000000 = 100000000000
方法3:使用浮点数(不推荐)
如果只是显示,可以用 double 或 long double,但浮点数可能不精确表示整数。

(图片来源网络,侵删)
#include <stdio.h>
int main() {
double num = 100000000000.0;
printf("100000000000 = %.0f\n", num);
return 0;
}
输出:
100000000000 = 100000000000
注意: 浮点数可能因精度问题导致错误,不适合精确计算。
方法4:使用大数库(如GMP)
如果数字超过 long long 的范围(如 10^100),需要使用专门的大数库,如 GMP(GNU Multiple Precision Arithmetic Library)。
示例:

(图片来源网络,侵删)
#include <stdio.h>
#include <gmp.h>
int main() {
mpz_t num;
mpz_init_set_str(num, "100000000000", 10); // 初始化并设置字符串
gmp_printf("100000000000 = %Zd\n", num);
mpz_clear(num); // 释放内存
return 0;
}
编译(需安装GMP):
gcc program.c -lgmp
| 方法 | 适用场景 | 示例代码 |
|---|---|---|
long long |
64位整数(推荐) | long long num = 100000000000; |
unsigned long long |
非负64位整数 | unsigned long long num = 100000000000; |
| 浮点数 | 仅显示,不精确计算 | double num = 100000000000.0; |
| GMP库 | 超大数(如 10^100) |
mpz_t num; mpz_init_set_str(num, "100000000000", 10); |
对于 100000000000,直接使用 long long 或 unsigned long long 即可。
