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;
}
答案 0 :(得分:20)
long
只是long int
的简写。这是因为原则上long
只是一个限定符(例如,它也可以用于延长double
数据类型)
从C ++ ISO标准的7.1.5.2节,一个等效类型说明符表:
答案 1 :(得分:4)
short
,signed short
,short int
或signed short int
unsigned short
或unsigned short int
int
,signed
或signed int
unsigned
或unsigned 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
unsigned long long
或unsigned long long int
有以下附加要点:
(5)每个逗号分隔的集合指定相同的类型,但对于位字段,它是实现定义的,指定符
int
是否指定与signed int
相同的类型或者与unsigned int
相同的类型。
答案 2 :(得分:1)
是的。 unsigned
,signed
,short
,long
,long 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)
希望这有帮助。