C ++类型unsigned long int

时间:2012-08-02 14:33:49

标签: c++ c

unsigned long int是否与unsigned long相对吗? 在C ++中

在我看来,他们是一样的。但我看到有些人仍然在代码中使用unsigned long int。 不明白为什么?有谁可以帮我解释一下

#include <stdio.h>

int main() {
    unsigned long int num = 282672; 
    int normalInt = 5;
    printf("");
    return 0;
}

5 个答案:

答案 0 :(得分:20)

long只是long int的简写。这是因为原则上long只是一个限定符(例如,它也可以用于延长double数据类型)

从C ++ ISO标准的7.1.5.2节,一个等效类型说明符表:

enter image description here

答案 1 :(得分:4)

C99标准的第6.6.2节给出了以下类型列表(这只是一个摘录):

  • shortsigned shortshort intsigned short int
  • unsigned shortunsigned short int
  • intsignedsigned int
  • unsignedunsigned int
  • longsigned longlong intsigned long int
  • unsigned longunsigned long int
  • long longsigned long longlong long intsigned long long int
  • unsigned long longunsigned long long int

有以下附加要点:

  

(5)每个逗号分隔的集合指定相同的类型,但对于位字段,它是实现定义的,指定符int是否指定与signed int相同的类型或者与unsigned int相同的类型。

答案 2 :(得分:1)

的。 unsignedsignedshortlonglong long都是XXX int的简单类型说明符。

请参阅标准中的 7.1说明符[dcl.spec]

  

3 [注意:由于默认情况下有符号,无符号,长和短,因此显示一个类型名称   这些说明符被视为(重新)声明的名称。 [例如:

     

void h(unsigned Pc); // void h(unsigned int)

     

void k(unsigned int Pc); // void k(unsigned int)

     

-end example] -end note]

7.1.6.2简单类型说明符[dcl.type.simple]

    Table 10 — simple-type-specifiers and the types they specify

    Specifier(s)            | Type
    ------------------------+---------------------------------
    type-name               | the type named
    simple-template-id      | the type as defined in 14.2
    char                    | “char”
    unsigned char           | “unsigned char”
    signed char             | “signed char”
    char16_t                | “char16_t”
    char32_t                | “char32_t”
    bool                    | “bool” 
    unsigned                | “unsigned int”
    unsigned int            | “unsigned int”
    signed                  | “int”
    signed int              | “int”
    int                     | “int”
    unsigned short int      | “unsigned short int”
    unsigned short          | “unsigned short int”
    unsigned long int       | “unsigned long int”
    unsigned long           | “unsigned long int”
    unsigned long long int  | “unsigned long long int”
    unsigned long long      | “unsigned long long int”
    signed long int         | “long int”

答案 3 :(得分:0)

unsigned long int是正确的类型定义,但int可以忽略。

答案 4 :(得分:0)

是的,它们是一样的。说unsigned long int只是明确地声明它是一个int。

您始终可以按sizeof(unsigned long int)sizeof(unsigned long)

查看类型的大小

希望这有帮助。