C ++中最大的数字原始数据类型是什么(旧/新标准)

时间:2010-04-17 07:53:28

标签: c++

我对旧/新有点困惑所以这是我的问题。 旧C ++标准和新C ++标准中最大的数字原始数据类型是什么? (整数和浮点)

问候&非常感谢提前 糟糕

3 个答案:

答案 0 :(得分:6)

在1998年的标准中,long intunsigned long int是至少与标准的其他整数类型(§3.9.1/ 2-3)一样大的类型。 (它们可能是也可能不是“最大的”类型。例如,long int可能与int的大小相同。就此而言,char的大小可能相同也是。)浮点long double提供的精度至少与其他两个浮点类型(§3.9.1/ 8)一样多。

在C ++ 0x(n3092)标准草案中,类型为long long intunsigned long long int(§3.9.1/ 2-3)。最精确的浮点类型仍为long double(§3.9.1/ 8)。

实现可能提供超出标准要求的更大类型。有关详细信息,请查看文档。

答案 1 :(得分:2)

答案 2 :(得分:1)

在C ++ 03中,long [int]unsigned long [int]具有最大的积分范围,long double具有最大的FP精度和范围。

在C ++ 0x中,intmax_tuintmax_t具有最大的积分范围,甚至可能大于long long。例如,实现同时使longlong long为64位并使intmax_t为128位是合理的。

intmax_t仅仅是从C99采用的,因此如果您的实现支持C99,则不需要C ++ 0x。只需添加stdint.h代替cstdint即可。无论如何,使用“C风格”标题是完全安全的,尽管我不确定是否有一种在C ++中检查C99 typedef的好方法。

C99或C ++ 0x没有引入精确或方便命名的浮点类型,如果您想要可移植性,请避免使用float64_tfloatmax_t之类的内容。