long long int打印用%lld还是%I64d?

99ANYc3cd6
预计阅读时长 9 分钟
位置: 首页 C语言 正文

核心答案

long long int 对应的格式说明符是 %lld

C语言打印longlongint
(图片来源网络,侵删)

这是一个示例代码:

#include <stdio.h>
int main() {
    // 声明一个 long long int 类型的变量
    // 注意:为了确保数值足够大,最好使用 LL 后缀
    long long int my_number = 123456789012345LL;
    // 使用 %lld 打印
    printf("The value of my_number is: %lld\n", my_number);
    return 0;
}

输出:

The value of my_number is: 123456789012345

重要细节与注意事项

long long int 的简写

你可以使用 long long,它和 long long int 是完全等价的。int 可以省略。

long long my_number = 123456789012345LL; // 这行代码和上面完全一样

字面量(Literal)的后缀

当你给 long long 类型的变量赋一个很大的整数值时(比如超过 intlong 的范围),必须在数字后面加上后缀 LLll,以告诉编译器这个字面量是 long long 类型。

C语言打印longlongint
(图片来源网络,侵删)
  • 推荐使用 LL,因为它更容易阅读,不易与数字 1 混淆。
  • ll 也可以,但 LL 是更现代和推荐的做法。
long long big_num = 9000000000000000000LL; // 正确
// long long big_num = 9000000000000000000; // 在某些系统上可能会警告或出错,因为默认可能是 int

跨平台问题:%lld vs %I64d

这是一个非常经典且重要的跨平台问题。

  • %lld: 这是 C99 标准以及现代 C++ 标准中规定的格式说明符,在 Linux、macOS 和绝大多数现代编译器(如 GCC, Clang)上,这是正确的。
  • %I64d: 这是 微软的 Visual Studio (MSVC) 专用的格式说明符,在旧的 Windows 环境下使用 MSVC 编译时,必须使用 %I64d

如何解决兼容性问题?

最好的方法是使用预处理器指令来区分编译器。

#include <stdio.h>
int main() {
    long long num = 123456789012345LL;
#ifdef _MSC_VER
    // 如果是微软的编译器 (Visual Studio)
    printf("MSVC style: %I64d\n", num);
#else
    // 如果是其他编译器 (GCC, Clang, MinGW等)
    printf("Standard style: %lld\n", num);
#endif
    return 0;
}
  • 注意:如果你在 Windows 上使用 MinGW(一个在 Windows 上模拟 GCC 工具链的环境),你应该使用标准的 %lld,因为 MinGW 遵循的是 GCC 的标准。

unsigned long long int

如果你要打印的是无符号的 long long(即 unsigned long long),格式说明符需要做相应改变。

C语言打印longlongint
(图片来源网络,侵删)
  • unsigned long long 的格式说明符是 %llu
  • 同样,在 MSVC 中是 %I64u
#include <stdio.h>
int main() {
    unsigned long long unsigned_num = 18446744073709551615ULL;
    // 标准写法
    printf("Unsigned long long: %llu\n", unsigned_num);
    // MSVC 写法
    // printf("Unsigned long long: %I64u\n", unsigned_num);
    return 0;
}

输出:

Unsigned long long: 18446744073709551615

注意这里我们使用了 ULL 后缀来表示无符号 long long 字面量。


总结表格

数据类型 标准格式说明符 (C99) MSVC (Visual Studio) 格式说明符 字面量后缀
long long / long long int %lld %I64d LLll
unsigned long long %llu %I64u ULLull

最佳实践建议

  1. 优先使用 long longint 是多余的。
  2. long long 字面量添加 LL 后缀,这是好习惯,能避免潜在问题。
  3. 如果你需要代码在 Windows (MSVC) 和其他平台(如 Linux)上都能编译,请使用预处理器 #ifdef 来选择正确的格式说明符,这是最健壮的跨平台解决方案。
  4. 明确类型:使用 long long 表示有符号整数,unsigned long long 表示无符号整数,并使用对应的 %lld/%llu
-- 展开阅读全文 --
头像
织梦dede_archives表如何高效管理文章数据?
« 上一篇 今天
dede field.litpic标签如何正确调用图片?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

目录[+]