c++ - 为什么在 C++ 中使用 cin、cout 或 %I64d 优于 %lld 说明符?

标签 c++ 64-bit iostream format-specifiers long-long

为什么很多在线评委建议“不要使用%lld说明符在С++中读写64位整数”

首选使用 cincout 流还是 %I64d 说明符?

最佳答案

我相信答案与 %lld 表示 long long decimal 有关,不能保证是 64 位。例如,在某些系统上可能是 128 位。 (虽然如果变量是 long long 而不是,比如说,uint64_t,那么我希望 %lld 是正确的使用 - 或者它反过来会出错)

不幸的是,printfscanf 及其兄弟的设计使得编译器实现和格式必须匹配。

显然,coutcin 是安全的,因为编译器会自行选择正确的输出和输入翻译。

这也可能与“在线评委”使用的编译器有关 - 我认为 Microsoft 编译器在某些时候支持 64 位整数,但不支持 long long,因此没有 %lld,但有 %l64d

关于c++ - 为什么在 C++ 中使用 cin、cout 或 %I64d 优于 %lld 说明符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15718039/

相关文章:

python - 使用python 64位运行32位程序

c++ - 使用 __m64 引用将 C++ 项目转换为 x64

c++ - 什么时候应该使用字符串而不是字符串流?

c++ 只读取最后一行文本文件的最快方法?

c++ - Raspberry Pi 使用 SQLite3 和 SDL2 编译多个 C++ 文件

c++ - "Ambiguous call to overloaded function"在 MSVC 编译器中带有枚举类

windows-services - 迁移到 64 位计算机时对 dll 的影响

c++ - IOStream 库有哪些重要的替代方案? (除了 cstdio)

c++ - 为什么 std::ostream 这么慢?

c++ - 从原始数据就地创建 std::vector