“long int”,“long long”数据类型

时间:2010-04-15 07:43:32

标签: c++ c++11

这些新数据类型的目的是什么?我通常会使用“int”或“long”,但为什么会存在这些?他们带来了什么新的功能或目的?

6 个答案:

答案 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在今天的编译器中很常见;为了兼容性,传统上longint即使在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,它具有更清晰的“含义”。