什麼會以下的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構建編譯。 –