以下typedef的含义是什么,为什么需要它?
typedef unsigned long int ULONG;
它与之前的版本有何不同?
typedef unsigned long ULONG;
对于gcc,sizeof int = 4,sizeof long = 8,而sizeof ULONG = 8。
typedef unsigned long int ULONG;
它与之前的版本有何不同?
typedef unsigned long ULONG;
对于gcc,sizeof int = 4,sizeof long = 8,而sizeof ULONG = 8。
它们是相同的。因为long
默认是对int
进行的修饰符,所以可以省略int
。同样的规则适用于short
和short int
、unsigned
和unsigned int
等。
这里需要理解的关键是long
、short
和unsigned
是类型修饰符,而不像int
、char
、double
等本身就是类型。
实际上,在C++标准ISO/IEC 14882中并没有定义unsigned long
,所以如果它对您有用,那只是因为您的编译器将unsigned long int
解释为unsigned long
。
unsigned long
作为有效的类型说明符,相当于 unsigned long int
。(您是正确的,§3.9.1 'Fundamental types' 节没有列出 unsigned long
。) - Jonathan Leffler完全没有区别。long
是long int
的同义词(就像short
是short int
的同义词一样)。
long 的大小与 gcc 无关,而与操作系统有关