2012-06-06 72 views
4

什么会以下的typedef意味着,以及为什么会被要求型长Vs的类型长整型

typedef unsigned long int ULONG; 

如何不同

typedef unsigned long ULONG; 

是海湾合作委员会的sizeof INT = 4的sizeof长= 8,sizeof ULONG = 8。

+0

“对于gcc sizeof int = 4,sizeof long = 8” - 不在32位系统上。对于这个问题,在Mingw64中也是如此。这些类型的大小或多或少由GCC将用于调用OS库的ABI决定。 “或多或少”,因为我敢肯定你可以做一个GCC的构建,其中的类型不符合操作系统,你只是有一些额外的麻烦调用代码,而不是由你的GCC构建编译。 –

回答

10

它们是相同的。由于long默认为int的修饰符,因此可以省略int。这同样适用于shortshort intunsignedunsigned int

了解这里最根本的区别是,longshortunsigned类型修饰符,而不是类型本身,不像intchardouble等。

3

完全没有区别。 longlong int同义(正如shortshort int一样)。

-1

长的大小是没有关系的GCC,但OS

3

其实,unsigned long没有在C++标准ISO/IEC 14882规定如此,如果它的工作原理对你而言,这只是因为你的编译器将unsigned long int解释为unsigned long

+0

欢迎来到堆栈溢出。 ISO/IEC 14882:2011第7.1.6.2节“简单类型说明符”中的表10将'unsigned long'定义为有效类型说明符,相当于'unsigned long int'。 (你说得对,§3.9.1“基本类型”没有列出'unsigned long'。) –