long long 是一个64位整数类型,为了确保它能正确输出,你需要使用对应的 printf 格式说明符。

(图片来源网络,侵删)
核心要点
在 printf 函数中,用于输出 long long 类型变量的格式说明符是 %lld。
语法:
printf("%lld", your_long_long_variable);
完整示例代码
下面是一个完整的、可运行的示例,展示了如何定义、赋值并输出 long long 类型的变量。
#include <stdio.h>
int main() {
// 1. 定义并初始化一个 long long 类型的变量
// 为了表示 long long 类型的常量,建议在数字后加上 LL 或 ll 后缀
long long number = 123456789012345LL;
// 2. 使用 %lld 格式说明符输出
printf("The value of the long long variable is: %lld\n", number);
// 3. 也可以输出一个 long long 类型的常量
printf("A large long long constant: %lld\n", 9223372036854775807LL);
return 0;
}
编译和运行:

(图片来源网络,侵删)
- 将代码保存为
example.c。 - 使用GCC编译器进行编译(推荐加上
-Wall选项来开启所有警告):gcc -Wall example.c -o example
- 运行生成的可执行文件:
./example
预期输出:
The value of the long long variable is: 123456789012345
A large long long constant: 9223372036854775807
重要注意事项
后缀 LL 或 ll
当你给 long long 类型的变量赋一个很大的常量值时,最好在数字后面加上 LL 或 ll 后缀,这告诉编译器这个常量是 long long 类型,可以防止因数值过大而发生意外的整数溢出。
1234567890(默认是int)1234567890LL(明确是long long)
LL 和 ll 都可以,但 LL 更具可读性,是C99标准之后推荐的做法。
警告:使用 %d 的错误
如果你错误地使用 %d(用于 int 类型)来输出 long long,会发生什么?
- 在32位系统上:
int和long long的大小不同,printf会从错误的内存位置读取数据,导致输出一个完全错误的值。 - 在64位系统上:
int通常是32位,而long long是64位。printf仍然会只读取变量的前32位,导致输出一个被截断的、错误的值。
错误示例:
#include <stdio.h>
int main() {
long long big_number = 123456789012345LL;
printf("Wrong output with %%d: %d\n", big_number); // 错误!
return 0;
}
在64位系统上的错误输出:
Wrong output with %d: 1234567890 // 只输出了低32位
long long 的输入 scanf
如果你需要从用户输入中读取一个 long long 类型的值,scanf 函数对应的格式说明符也是 %lld。
#include <stdio.h>
int main() {
long long user_input;
printf("Please enter a large integer: ");
// 使用 %lld 来读取 long long 类型
if (scanf("%lld", &user_input) == 1) {
printf("You entered: %lld\n", user_input);
} else {
printf("Invalid input!\n");
}
return 0;
}
| 操作 | 格式说明符 | 示例 |
|---|---|---|
输出 long long |
%lld |
printf("%lld", my_var); |
输入 long long |
%lld |
scanf("%lld", &my_var); |
表示 long long 常量 |
LL 或 ll 后缀 |
long long x = 9999999999LL; |
记住这个核心规则:处理 long long,读写都用 %lld。
