为什么很多在线评委建议 “不要使用 %lld
说明符来读写 С++ 中的 64 位整数” ?
是首选使用 cin
、 cout
流还是 %I64d
说明符?
原文由 Rishabh 发布,翻译遵循 CC BY-SA 4.0 许可协议
为什么很多在线评委建议 “不要使用 %lld
说明符来读写 С++ 中的 64 位整数” ?
是首选使用 cin
、 cout
流还是 %I64d
说明符?
原文由 Rishabh 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
我相信答案与
%lld
表示long long decimal
相关,不能保证是 64 位。例如,在某些系统上可能是 128 位。 (尽管如果变量是long long
而不是uint64_t
,那么我希望%lld
是正确的使用方法 - 否则它会出错绕路)不幸的是,
printf
和scanf
及其兄弟的设计使得编译器实现和格式必须匹配。显然,
cout
和cin
是安全的,因为编译器会自行选择正确的输出和输入翻译。它也可能与“在线法官”使用的编译器有关 - 我认为微软编译器在某些时候支持 64 位整数,但不支持
long long
,因此没有%lld
,但确实有%l64d
。