【问题标题】:"long int", "long long" Data Types“long int”、“long long”数据类型
【发布时间】:2010-04-15 07:43:31
【问题描述】:

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

【问题讨论】:

  • 它们已经存在了很长一段时间了......
  • long long int 等同于long long ;)

标签: c++ c++11


【解决方案1】:

long int一直是long的全称,只是很少使用。

long long 已经存在了一段时间(在最后一个 C 标准中),并且保证至少 64 位大小(long 只保证 32 位)。

【讨论】:

    【解决方案2】:

    嗯,它们带来了更大范围的整数,因此计算机可以轻松处理,例如比尔盖茨的纳税申报表。

    顺便说一句,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.
    

    幽默>

    【讨论】:

    • 反之,有机会实现short long。这具有不引入新关键字的优点。他们还可以引入short short 作为保证字节长度数量的一种方式,释放char 成为完全表达本地字符集所必需的任何东西...... face>
    • c1x 为我们提供了 uint8_t (或类似的东西),用于具有 8 位类型(以及其他特定位宽)的实现。我确实喜欢 RGB 值的 24 位短长的想法。
    • echo 'long long long x;' | gcc -c -x c -
    • @Donal:我实际上认为short longint24_t 之类的东西很有用,它是嵌入式和低级编程中经常需要的一种类型——例如C/C++ 擅长什么。
    • @Joe:我原以为那会是long short。 ;-)
    【解决方案3】:

    嗯,显然“long long”比“long”还要长。 :)

    不同之处是特定于平台的:当“long”是 32 位时,“long long”可以是 64 位整数,也可以都是 64 位。至于“long int”,这只是“long”的说法,没有双关语。

    【讨论】:

      【解决方案4】:

      可能使 C++ 与支持它的 C99 保持一致(并使标准与编译器实际支持的内容保持一致,因为它们中的大多数已经支持 long long)。

      【讨论】:

      • 有时标准落后于现有的标准,橡皮图章的常见做法(希望在此过程中不会出现太多令人讨厌的事情)。
      【解决方案5】:

      long int 只是long 的完整形式,与unsigned long int 等不同。这在 C++0x 中并不新鲜。

      long long 在今天的编译器中很常见;为了兼容性,即使在 64 位架构上,longint 都是 32 位的。 long long 在这种情况下指定 64 位;它是 C99 的一部分,并且根据该标准必须至少为 64 位。

      您还可以使用long long long 在某些编译器上获取 128 位数据类型;其他编译器使用属性提供此类数字(例如,GCC 有 __attribute__((__mode__(__TI__))))),并且大多数编译器都有一个 <limits.h>__int128_t/__uint128_t

      【讨论】:

        【解决方案6】:

        如前所述,这些类型并不新鲜。您可能对this overview 感兴趣。作为补充说明,如果对类型感到困惑,您还可以使用intn_t types,它具有更清晰的“含义”。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-07-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-05-10
          相关资源
          最近更新 更多