【问题标题】:What are Qualifiers in the C language?C语言中的限定符是什么?
【发布时间】:2011-07-03 11:43:30
【问题描述】:

我正在这个网址阅读一些文字:

https://cs.senecac.on.ca/~btp100/pages/content/varia_p.html

在“限定词”部分,他们说:

“我们可以限定 int 类型以确保它包含最小位数” …… 一个 short 至少包含 16 位: ....

我不明白,“限定 int 类型”是什么意思,为什么“A short 包含至少 16 位”。

有人可以详细说明一下吗? 谢谢大家。

【问题讨论】:

    标签: c qualifiers


    【解决方案1】:

    限定符是变量或函数的额外名称,表示该变量或函数的额外质量或额外含义。就像 Arun Kumar 博士的博士一样

    变量的限定符是(TYPE 限定符):signedunsignedlongshortlong longconstvolatilestaticauto、@9 @,register

    函数的限定符是:staticexterninline

    【讨论】:

    • 如果是术语问题,最好总是验证。他们可能会违背直觉。
    【解决方案2】:

    关键字shortlongunsignedsigned等称为限定符。限定词的顺序无关紧要,例如

    short int signed x; // means signed short int x, at least 16 bits :)
    

    在这一行中,您使用 shortsigned 限定符限定了 int 类型

    【讨论】:

    • 它们实际上被称为“类型说明符”。在 C 中,限定符是 constrestrictvolatile
    • @Deitrich:是的,你是对的,但显然 OP 的书通过限定词来表示这些
    【解决方案3】:

    您可以使用限定符来指示要在 int 中存储的数字大小。认为确切的大小因 C 的实现而异,但通常如下所示。

    short int a; // 16 bits, range -32,768 to 32,767

    unsigned short int b; // 16 bits, range 0 to 65,535

    unsigned int c; // 32 bits, range 0 to 4,294,967,295

    int d; // 32 bits, range -2,147,483,648 to 2,147,483,647

    long int d; // 32 bits, range -2,147,483,648 to 2,147,483,647 (minimum requirement, can be higher on 64bit systems)

    【讨论】:

      【解决方案4】:

      一些关键字改变了“int”类型的行为。这些被称为限定符。示例包括“short”、“long”、“unsigned”、“const”、“volatile”。因此,如果我们用“short”来限定“int”,我们就知道该变量至少包含 16 位:

      short int var;
      

      【讨论】:

      • 不要混用,shortlongunsigned 不是 C 术语中的限定词。限定词是 constvolatilerestrict 和即将推出的标准_Atomic
      【解决方案5】:

      从逻辑上讲,整数是从负无穷到正无穷的任意整数。

      如果能够在 C/C++ 中声明一个 int 并使用它来存储任何整数,那就太好了,但不幸的是,您可以在 int 数据类型中存储的值的范围必须受到限制。

      C/C++ 允许您声明 short、int 或 long 变量类型,它们可以分别存储 2^16、2^32 和 2^64 个不同的整数。

      说 int 类型是合格的,就等于说它被限制为只能容纳较小的整数子集。

      【讨论】:

      • -1:整数并不总是 32 位,长整数并不总是 64 位。短裤 至少 16 位(可能更多)。还有一些不影响存储位数的限定符。
      【解决方案6】:

      仅根据 ISO 标准 C11 进行澄清

      • 存储类说明符 (6.7.1):typedefexternstatic_Thread_localautoregister
      • 类型说明符 (6.7.2): void, char, short, int, long, float, double, @9876543@35@, @9876543@35@, @9876543336 , _Complex, atomic-type-specifier _Atomic (type name), struct-or-union-specifier (struct and union), enum-specifier (enum ), typedef-name (typedef + something)。
      • 类型限定符 (6.7.3):constrestrictvolatile_Atomic

      _Atomic 类型限定符与 _Atomic 类型说明符不同。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-16
        • 1970-01-01
        • 2012-07-02
        • 1970-01-01
        • 2014-09-09
        • 2013-06-29
        • 2013-08-25
        • 1970-01-01
        相关资源
        最近更新 更多