这些新数据类型的目的是什么?我通常会使用“int”或“long”,但为什么会存在这些?他们带来了什么新的功能或目的?
答案 0 :(得分:5)
long int
一直是long
的全名,很少使用。
long long
已存在一段时间(在最后一个C标准中),保证至少64位大小(long
仅保证32位)。
答案 1 :(得分:0)
嗯,它们带来了更大范围的整数,因此计算机可以轻松处理,比如比尔盖茨的纳税申报表。
顺便说一句,long int
根本不是新的,但大多数人只使用较短的变体long
。
在即将出台的新ISO标准草案中寻找这些续集:
longer long - slightly larger than a long long (this was initially put
forward as "long long long" but the ISO committee barfed).
even longer long - bigger yet.
stupendous long - should keep us going for a while.
< /幽默>
答案 2 :(得分:0)
嗯,显然“长长”甚至长于“长”。 :)
区别在于特定于平台:“long long”可以是64位整数,当“long”是32位时,或者它们都可以是64位。至于“long int”,这只是说“长”的漫长道路,没有任何双关语。
答案 3 :(得分:0)
可能会使C ++与支持它的C99保持一致(并使标准与编译器实际支持的内容一致,因为它们中的大多数已经支持了很长时间)。
答案 4 :(得分:0)
long int
只是long
的完整形式,与unsigned long int
等不同,等等。这在C ++ 0x中并不新鲜。
long long
在今天的编译器中很常见;为了兼容性,传统上long
和int
即使在64位架构上也是32位; long long
在这种情况下指定64位;它是C99的一部分,根据该标准必须至少为64位。
您还可以使用long long long
在某些编译器上获取128位数据类型;其他编译器使用属性提供此类数字(例如GCC有__attribute__((__mode__(__TI__))))
),大多数编译器都有一个<limits.h>
/ __int128_t
的{{1}}。
答案 5 :(得分:0)
如上所述,这些类型并不新鲜。您可能对this overview感兴趣。作为补充说明,如果对类型感到困惑,您还可以使用intn_t types,它具有更清晰的“含义”。