什么会以下的typedef意味着,以及为什么会被要求型长Vs的类型长整型
typedef unsigned long int ULONG;
如何不同
typedef unsigned long ULONG;
是海湾合作委员会的sizeof INT = 4的sizeof长= 8,sizeof ULONG = 8。
什么会以下的typedef意味着,以及为什么会被要求型长Vs的类型长整型
typedef unsigned long int ULONG;
如何不同
typedef unsigned long ULONG;
是海湾合作委员会的sizeof INT = 4的sizeof长= 8,sizeof ULONG = 8。
它们是相同的。由于long
默认为int
的修饰符,因此可以省略int
。这同样适用于short
和short int
,unsigned
和unsigned int
等
了解这里最根本的区别是,long
,short
和unsigned
是类型修饰符,而不是类型本身,不像int
,char
,double
等。
完全没有区别。 long
与long int
同义(正如short
与short int
一样)。
长的大小是没有关系的GCC,但OS
其实,unsigned long
没有在C++标准ISO/IEC 14882规定如此,如果它的工作原理对你而言,这只是因为你的编译器将unsigned long int
解释为unsigned long
。
欢迎来到堆栈溢出。 ISO/IEC 14882:2011第7.1.6.2节“简单类型说明符”中的表10将'unsigned long'定义为有效类型说明符,相当于'unsigned long int'。 (你说得对,§3.9.1“基本类型”没有列出'unsigned long'。) –
“对于gcc sizeof int = 4,sizeof long = 8” - 不在32位系统上。对于这个问题,在Mingw64中也是如此。这些类型的大小或多或少由GCC将用于调用OS库的ABI决定。 “或多或少”,因为我敢肯定你可以做一个GCC的构建,其中的类型不符合操作系统,你只是有一些额外的麻烦调用代码,而不是由你的GCC构建编译。 –