此问题已在此处有答案:
Standard guarantees for aliases of integer types in C/C++? E.g.: Is "unsigned" always equal to "unsigned int"?(1个答案)
两年前关闭。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;
}
字符串
5条答案
按热度按时间zpqajqem1#
是的。
long
只是long int
的简写。“这是因为原则上long
只是一个限定符(例如,它还可以用于延长double
数据类型)C++ ISO标准的7.1.5.2一节中提供了等效类型说明符的表:
的数据
iyzzxitl2#
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
相同的类型是实现定义的。4szc88ey3#
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]*
字符串
qpgpyjmq4#
unsigned long int
是正确的类型定义,但是int
可以忽略。cidc1ykv5#
是的,它们是一样的。说
unsigned long int
只是明确地声明它是一个int。您始终可以通过
sizeof(unsigned long int)
和sizeof(unsigned long)
查看类型的大小希望这对你有帮助。