我对旧/新有点困惑所以这是我的问题。 旧C ++标准和新C ++标准中最大的数字原始数据类型是什么? (整数和浮点)
问候&非常感谢提前 糟糕
答案 0 :(得分:6)
在1998年的标准中,long int
和unsigned long int
是至少与标准的其他整数类型(§3.9.1/ 2-3)一样大的类型。 (它们可能是也可能不是“最大的”类型。例如,long int
可能与int
的大小相同。就此而言,char
的大小可能相同也是。)浮点long double
提供的精度至少与其他两个浮点类型(§3.9.1/ 8)一样多。
在C ++ 0x(n3092)标准草案中,类型为long long int
和unsigned 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_t
和uintmax_t
具有最大的积分范围,甚至可能大于long long
。例如,实现同时使long
和long long
为64位并使intmax_t
为128位是合理的。
intmax_t
仅仅是从C99采用的,因此如果您的实现支持C99,则不需要C ++ 0x。只需添加stdint.h
代替cstdint
即可。无论如何,使用“C风格”标题是完全安全的,尽管我不确定是否有一种在C ++中检查C99 typedef的好方法。
C99或C ++ 0x没有引入精确或方便命名的浮点类型,如果您想要可移植性,请避免使用float64_t
或floatmax_t
之类的内容。