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

新手上路,请多包涵

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

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

原文由 Rishabh 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
1 个回答

我相信答案与 %lld 表示 long long decimal 相关,不能保证是 64 位。例如,在某些系统上可能是 128 位。 (尽管如果变量是 long long 而不是 uint64_t ,那么我希望 %lld 是正确的使用方法 - 否则它会出错绕路)

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

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

它也可能与“在线法官”使用的编译器有关 - 我认为微软编译器在某些时候支持 64 位整数,但不支持 long long ,因此没有 %lld ,但确实有 %l64d

原文由 Mats Petersson 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题