C 类型long Vs类型long int

C 类型long Vs类型long int,c,C,下面的typedef是什么意思,为什么需要它 typedef unsigned long int ULONG; 它和我的有什么不同 typedef unsigned long ULONG; 对于gcc sizeof int=4、sizeof long=8和sizeof ULONG=8,它们没有任何区别long与long int同义(正如short与short int同义)。它们是相同的。由于默认情况下,long是int的修饰符,因此可以省略int。这同样适用于short和short int、

下面的typedef是什么意思,为什么需要它

typedef unsigned long int ULONG;
它和我的有什么不同

typedef unsigned long ULONG;

对于gcc sizeof int=4、sizeof long=8和sizeof ULONG=8,它们没有任何区别
long
long int
同义(正如
short
short int
同义)。

它们是相同的。由于默认情况下,
long
int
的修饰符,因此可以省略
int
。这同样适用于
short
short int
unsigned
unsigned int


这里需要了解的基本内容是,
long
short
unsigned
是类型修饰符,而不是类型本身,这与
int
char
double
等不同。

long的大小与gcc无关,而与os相关,<代码>未签名的长< /C> >在C++标准ISO/IEC 14882中没有定义,所以,如果它对你有用,那只是因为你的编译器解释了<代码>未签名的长int < /代码>为<代码>未签名的长< //> > < /p>“GCC siZeof int=4,sisiof long=8”,而不是在32位系统上。就这点而言,Mingw64也没有。类型的大小或多或少由GCC用来调用OS库的ABI决定。“多多少少”因为我很确定你可以在类型与操作系统不匹配的地方构建GCC,你只需要调用你的GCC构建没有编译的代码就会有额外的麻烦。欢迎使用堆栈溢出。ISO/IEC 14882:2011第§7.1.6.2节“简单类型说明符”中的表10将
无符号long
定义为有效类型说明符,相当于
无符号long int
。(您是对的,第§3.9.1节“基本类型”没有列出
无符号long