类型 long 与类型 long int 的区别

4
以下typedef的含义是什么,为什么需要它?
typedef unsigned long int ULONG;

它与之前的版本有何不同?

typedef unsigned long ULONG;

对于gcc,sizeof int = 4,sizeof long = 8,而sizeof ULONG = 8。


对于gcc,sizeof int = 4,sizeof long = 8 - 不适用于32位系统。在Mingw64中也是如此。类型的大小或多或少由GCC将使用调用OS库的ABI确定。 "或多或少"是因为我相信您可以构建GCC的版本,其中类型与OS不匹配,但是您只需调用未由GCC版本编译的代码时会遇到一些额外的麻烦。 - Steve Jessop
4个回答

10

它们是相同的。因为long默认是对int进行的修饰符,所以可以省略int。同样的规则适用于shortshort intunsignedunsigned int等。

这里需要理解的关键是longshortunsigned是类型修饰符,而不像intchardouble等本身就是类型。


3

实际上,在C++标准ISO/IEC 14882中并没有定义unsigned long,所以如果它对您有用,那只是因为您的编译器将unsigned long int解释为unsigned long


欢迎来到 Stack Overflow。ISO/IEC 14882:2011 标准中第 §7.1.6.2 节的表格 10 定义了 unsigned long 作为有效的类型说明符,相当于 unsigned long int。(您是正确的,§3.9.1 'Fundamental types' 节没有列出 unsigned long。) - Jonathan Leffler

3

完全没有区别。longlong int的同义词(就像shortshort int的同义词一样)。


-1

long 的大小与 gcc 无关,而与操作系统有关


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接