unsigned long int
在C++中是否等同于unsigned long
?
我认为它们是相同的。但是我见过一些人仍然在代码中使用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 节,等效类型说明符表:
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) 逗号分隔的每个集合指定相同的类型,但是对于位字段,实现可定义说明符是指代与相同的类型还是与相同的类型。
stdio.h
并使用了 printf
的 C++ 问题 ;) - Hristo Iliev是的。 unsigned
,signed
,short
,long
,long long
都是用于 XXX int
的简单类型说明符。
请参阅标准中的 7.1 Specifiers [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)
—end example ] —end note ]
以及 7.1.6.2 Simple type specifiers [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
。
long unsigned
和 int long unsigned
都表示无符号长整型。 - Keith Thompson是的,它们是相同的。说 unsigned long int
只是明确地说明它是一个 int。
您可以通过 sizeof(unsigned long int)
和 sizeof(unsigned long)
查看类型的大小。
希望这有所帮助。
unsigned long int
和int
是两种不同的类型。int
既是关键字,也是一种类型的名称;而名称unsigned long int
使用了关键字int
,但并不指代类型int
。 - Keith Thompson
signed
标记,除了字符类型。这是有意为之还是表格中的错误? - Rik Schaafchar
是signed
还是unsigned
类型是由实现定义的。事实上,char
实际上是与unsigned char
和signed char
都不同的一种类型。这与所有其他整数类型不同,它们默认是signed
类型,除非使用了unsigned
关键字。 - Peter