std::numeric_limits::max() == INT_MAX
C++标准对此有何看法?我在标准中找不到任何明确说明这一点的引用,但我一直读到,对于既实现equivalent.
long long部件)又实现C++98的编译器来说,这些应该是C++98标准中没有的C99类型吗?我不知道是否有任何保证,这始终是正确的:std::numeric_limits::max() == ULLONG_MAX
这是一个合理的假设吗?
发布于 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部分:“脚注不应包含要求。”尽管表格或数字上的脚注可能是必需的。
发布于 2009-03-17 06:14:08
第一个应该保证为真:std::numeric_limits<int>::max() == INT_MAX。
但是,对于无符号长,没有保证,因为编译器/库不需要支持它们。但是..。
如果您的编译器和lib支持无符号长,它应该是相等的,因为类型的限制将是相同的,不管你怎么问。
是的,这是一个合理的假设。
发布于 2009-03-17 11:31:10
在C++中显然没有长数据类型的保证,因为长数据类型在C++中还不存在。如果它们存在,它们的行为是由编译器决定的,编译器应该对它们进行记录。
https://stackoverflow.com/questions/653150
复制相似问题