为什么很多在线评委建议“不要使用%lld
说明符在С++中读写64位整数”?
首选使用 cin
、cout
流还是 %I64d
说明符?
最佳答案
我相信答案与 %lld
表示 long long decimal
有关,不能保证是 64 位。例如,在某些系统上可能是 128 位。 (虽然如果变量是 long long
而不是,比如说,uint64_t
,那么我希望 %lld
是正确的使用 - 或者它反过来会出错)
不幸的是,printf
和 scanf
及其兄弟的设计使得编译器实现和格式必须匹配。
显然,cout
和 cin
是安全的,因为编译器会自行选择正确的输出和输入翻译。
这也可能与“在线评委”使用的编译器有关 - 我认为 Microsoft 编译器在某些时候支持 64 位整数,但不支持 long long
,因此没有 %lld
,但有 %l64d
。
关于c++ - 为什么在 C++ 中使用 cin、cout 或 %I64d 优于 %lld 说明符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15718039/