gpt4 book ai didi

c++ - 我应该使用 numeric_limits 还是 C limit 宏?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:15:17 26 4
gpt4 key购买 nike

我是 SO 的新手,这是我的第一个问题,但我已经阅读了规则,希望我不会违反任何规则。

我最近开始学习编程,并选择了 C++ 作为我的第一语言。今天我已经到了需要帮助才能做出正确决定的地步。我正在学习第 6 版的 C++ Primer Plus,到目前为止,作者只介绍了 C 宏,对 numeric_limits 模板(至少我认为它是一个模板)只字未提由于我的好奇心,我从互联网上学到了东西。

所以,现在我有点迷茫了,因为如果我理解正确的话,numeric_limits 是一种检查 C++ 类型限制的现代方法,因为它易于扩展。此外 AF​​AIK 在 C 宏中没有 C++11 类型的定义,如 char16_t。

搜索时我只找到了 that question ,但提供了尽可能有用的答案,不幸的是,他们没有回答我特别感兴趣的内容。而且他们实际上大多很老。

现在,具体问题:

基于 future 对代码执行速度、安全性和实用性的需求(我不太关心简单性)是使用那些旧的 C 宏更好还是我应该坚持 numeric_limits 考虑我提到的方面?

请原谅我的英语错误。这不是我的母语。

最佳答案

对于大多数代码,要么是 C 的宏,要么是 C++ 的 std::numeric_limits工作正常。在 C++03 中有一个问题是 min()max()成员无法产生常量表达式,但这个问题已通过 C++11 的 constexpr 解决。 .

这两种方法都是完全类型安全的,如果您能够衡量一个程序的两个版本之间的差异(仅在获取类型属性的方式上有所不同),我会感到很惊讶。宏不能替代的主要领域是模板:您需要模板实体的固定名称,而宏不能那样工作(它们在编译期间也会在错误的时间展开)。

就个人而言,我总是使用 std::numeric_limits<T> ,主要是因为我可以在我的所有代码中使用它,而且我可以更好地记住这些名称。

关于c++ - 我应该使用 numeric_limits 还是 C limit 宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20640422/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com