C++ C++;输入无符号长整型

C++ C++;输入无符号长整型,c++,c,C++,C,unsigned long int是否等于unsigned long? 在C中++ 在我看来,他们是一样的。但我看到一些人仍然在代码中使用无符号长整型。 不明白为什么?有人能给我解释一下吗 #include <stdio.h> int main() { unsigned long int num = 282672; int normalInt = 5; printf(""); return 0; } #包括 int main(){ 无符号长整型数

unsigned long int
是否等于
unsigned long
? 在C中++

在我看来,他们是一样的。但我看到一些人仍然在代码中使用无符号长整型。 不明白为什么?有人能给我解释一下吗

#include <stdio.h>

int main() {
    unsigned long int num = 282672; 
    int normalInt = 5;
    printf("");
    return 0;
}
#包括
int main(){
无符号长整型数=282672;
int normalInt=5;
printf(“”);
返回0;
}
是。
long
只是
long int
的简写。这是因为原则上
long
只是一个限定符(例如,它也可以用于延长
double
数据类型)

<>从C++ ISO标准7.7.5.2节,一个等价类型说明符表:


无符号长int
是正确的类型定义,但是可以忽略
int
。是的,它们是相同的。说
无符号长int
只是明确地说它是一个int

您可以通过
sizeof(unsigned long int)
sizeof(unsigned long)


希望这有帮助。

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

  • short
    signed short
    short int
    ,或
    signed short int
  • unsigned short
    ,或
    unsigned short int
  • int
    signed
    signed int
  • 无符号
    ,或
    无符号整数
  • long
    signed long
    long int
    ,或
    signed long int
  • unsigned long
    ,或
    unsigned long int
  • long-long
    signed long-long
    long-long-int
    ,或
    signed long-long-int
  • 无符号长整型
    ,或
    无符号长整型
还有以下补充点:

(5) 每个逗号分隔的集合都指定相同的类型,但对于位字段,由实现定义说明符
int
是将同一类型指定为
signed int
还是将同一类型指定为
unsigned int

对<代码>无符号,
有符号
都是
XXX int
的简单类型说明符

参见本标准中的7.1规范[dcl.spec]:

3[注意:由于默认情况下有符号、无符号、长型和短型都表示int,因此类型名出现在其中一个后面 这些说明符被视为(重新)声明的名称。[示例:

void h(无符号Pc);//void h(无符号int)

void k(无符号整数Pc);//void k(无符号整数)

-结束示例]-结束注释]

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


虽然这是一个C++问题;是的,C++的问题包括代码<代码> STDIO .H./COD>并使用<代码> Primtf;右:有时候,我只看标签,有时只看代码,也会被这个问题所吸引:不管怎样,这个问题都被标记为C和C++。C标记是在一年多后添加的。正如
long unsigned
int long unsigned
一样。我不确定“明确声明它是int”是什么意思
unsigned long int
int
是两种不同的类型
int
既是关键字又是类型名称;名称
unsigned long int
使用关键字
int
,但不引用类型
int
。我发现在您的表中,除了字符外,每个类型都省略了
signed
标记。这是故意的还是表中的错误?不,这不是错误。另请参见和@RikSchaaf-不,这不是一个错误。这些标准规定,无论
char
signed
还是
unsigned
类型,都由实现定义。事实上,
char
实际上是一种不同于
无符号char
有符号char
的类型。这与所有其他整数类型不同,这些整数类型是
有符号的
,除非使用
无符号的
关键字。@Sebastian很想知道。我仔细阅读了这两个问题的答案和评论,以了解两者存在的原因。谢谢你的澄清。
    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”