UINT64_MAX
定义在<cstdint>
:https ://en.cppreference.com/w/cpp/header/cstdint 。
这是我一直使用的。但是,我看到 C++ 也提供了这种替代方法:
std::numeric_limits<uint64_t>::max()
(请参阅:https ://en.cppreference.com/w/cpp/types/numeric_limits/max ),这是<limits>
标题中定义的许多数字限制选项的一部分:https ://en.cppreference.com/w/ cpp/types/numeric_limits。
C++ 版本对我来说似乎过于冗长,而且似乎没有任何好处。我认为它只是为了彻底而包含在内,因为他们通过其他numeric_limits<>
用 C++ 创建的功能添加了额外的功能,但我想,当他们在做这件事时,他们想涵盖所有内容。
std::numeric_limits<uint64_t>::max()
与 C 或 C++ 版本 ( )相比,使用纯 C++ 版本 ( ) 有什么好处UINT64_MAX
吗?
我真的更喜欢这个UINT64_MAX
版本,但总的来说,每当他们看到我用 C++ 写一些在 C 中也有效的东西时,都会从铁杆 C++ 开发人员那里找到很多回击。:)
注意:我还没有反对这个版本,但我想先了解一下,看看是否有一些我遗漏的东西真正让一个版本比另一个版本更好。
更新:这是我自己的答案:
我不太高兴这个问题在我按下提交按钮添加我自己的答案的同一秒就被关闭了,但这是我自己对这个问题的回答:
正如@Bob__ 在问题下的评论中指出的那样,在编写需要用 typename 替换部分std::numeric_limits<uint64_t>::max()
的 C++ 模板时,它确实是首选。uint64_t
T
但是,如果不在模板中,我UINT64_MAX
认为它会更受青睐,因为它简短、直截了当、不那么冗长且更易于阅读。