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;
}
long
只是 的简写long int
。这是因为原则long
上只是一个限定符(例如,它也可以用于延长double
数据类型)
来自 C++ ISO 标准,第 7.1.5.2 节,等效类型说明符表:
C99 标准的 §6.7.2 给出了以下类型列表(这只是摘录):
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
。
是的。unsigned
, signed
, short
, long
,long long
都是XXX int
.
请参阅标准中的7.1 说明符 [dcl.spec]:
3 [注意:由于signed、unsigned、long和short默认暗示int,出现在这些说明符之一之后的类型名称被视为(重新)声明的名称。[ 例子:
void h(unsigned Pc); // void h(unsigned int)
void k(unsigned int Pc); // void k(unsigned int)
—结束示例] —结束说明]
和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”
unsigned long int
是正确的类型定义,但是int
可以忽略。
是的,它们是一样的。说unsigned long int
只是明确地说明它是一个 int。
您始终可以通过sizeof(unsigned long int)
和查看类型的大小sizeof(unsigned long)
希望这可以帮助。