AFAIK,C只支持几种数据类型:
int, float, double, char, void enum.
我需要存储一个可以达到10位数的数字。因为我从
获得了一个低10位#INT_MAX
,我想我需要一个双倍。
<limits.h>
没有DOUBLE_MAX。我在互联网上找到一个DBL_MAX
,说这是LEGACY,也似乎是C ++。是我需要的两倍?为什么没有DOUBLE_MAX?
答案 0 :(得分:67)
DBL_MAX
在<float.h>
中定义。它在<limits.h>
上在unix上的可用性被标记为“(LEGACY)”。
(链接到unix标准,即使你没有unix标签,因为那可能是你发现“LEGACY”符号的地方,但是那里显示的float.h的大部分也在C标准中回到C89)< / p>
答案 1 :(得分:21)
您可以在<limits.h>
或<climits>
中获得整数限制。浮点特征在<float.h>
中为C定义。在C ++中,首选版本通常是std::numeric_limits<double>::max()
(为此#include <limits>
)。
关于您的原始问题,如果您想要一个比long
更大的整数类型,您应该考虑long long
。这不是正式包含在C ++ 98或C ++ 03中,而是C99和C ++ 11的一部分,因此所有合理的当前编译器都支持它。
答案 2 :(得分:6)
它在标准的float.h包含文件中。你想要DBL_MAX
答案 3 :(得分:6)
使用double
存储大整数是可疑的;可以在double
中可靠存储的最大整数远小于DBL_MAX
。您应该使用long long
,如果这还不够,则需要您自己的任意精度代码或现有库。
答案 4 :(得分:1)
您正在寻找float.h
标题。
答案 5 :(得分:1)
INT_MAX
只是limits.h中的定义。您不清楚是否需要存储整数或浮点值。如果是整数,并且使用64位编译器,则使用LONG
(LLONG
表示32位)。