首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 ><limits>与<climits>的等价性

<limits>与<climits>的等价性
EN

Stack Overflow用户
提问于 2009-03-17 06:05:56
回答 4查看 2.8K关注 0票数 3
  1. 被保证永远是正确的:

std::numeric_limits::max() == INT_MAX

C++标准对此有何看法?我在标准中找不到任何明确说明这一点的引用,但我一直读到,对于既实现equivalent.

  • What (至少是long long部件)又实现C++98的编译器来说,这些应该是C++98标准中没有的C99类型吗?我不知道是否有任何保证,这始终是正确的:

std::numeric_limits::max() == ULLONG_MAX

这是一个合理的假设吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-03-17 06:15:04

我的C++ 2003标准副本说,numeric_limits<>::max()min()模板将返回值:

相当于CHAR_MIN, SHRT_MIN, FLT_MIN, DBL_MIN,等。

相当于CHAR_MAX, SHRT_MAX, FLT_MAX, DBL_MAX,

不过,这些都是脚注。ISO/IEC指令第3部分:“脚注不应包含要求。”尽管表格或数字上的脚注可能是必需的。

票数 4
EN

Stack Overflow用户

发布于 2009-03-17 06:14:08

第一个应该保证为真:std::numeric_limits<int>::max() == INT_MAX

但是,对于无符号长,没有保证,因为编译器/库不需要支持它们。但是..。

如果您的编译器和lib支持无符号长,它应该是相等的,因为类型的限制将是相同的,不管你怎么问。

是的,这是一个合理的假设。

票数 2
EN

Stack Overflow用户

发布于 2009-03-17 11:31:10

在C++中显然没有长数据类型的保证,因为长数据类型在C++中还不存在。如果它们存在,它们的行为是由编译器决定的,编译器应该对它们进行记录。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/653150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档