(1)
unsigned long int
unsigned long int在C語言中是無符號長整形變量,是整形變量的一種。
unsigned long int 與unsigned long是等價的,即定義的時候int可以不寫。 C語言字節數為4,與long型數據一樣。
unsigned long int的取值范圍: 0~4294967295 即 0~(2的32次方-1)
unsigned 是無符號 long是長 int是整型數據 unsigned long int 就是無符號長整型數據
unsigned
整型的每一種都有無符號(unsigned)和有符號(signed)兩種類型(float和double總是帶符號的),在默認情況下聲明的整型變量都是有符號的類型(char有點特別),如果需聲明無符號類型的話就需要在類型前加上unsigned。無符號版本和有符號版本的區別就是無符號類型能保存2倍於有符號類型的數據,比如16位系統中一個int能存儲的數據的范圍為-32768~32767,而unsigned能存儲的數據范圍則是0~65535。由於在計算機中,整數是以補碼形式存放的。根據最高位的不同,如果是1,有符號數的話就是負數拉;如果是無符號數,則都解釋為正數。同時在相同位數的情況下,所能表達的整數范圍變大。另外,unsigned若省略后一個關鍵字,大多數編譯器都會認為是unsigned int。
int
int數據類型,在32位系統中(現在基本上int都是32位),范圍-2147483648~+2147483647。unsigned類型 的int 范圍:0~4294967295 即 0~(2的32次方-1)
所以我覺得unsigned int 與 unsigned long 在一般情況下是一樣的!
(2)
今天在測試程序時發現,當用unsigned定義一個變量時,經檢測,是一個四個字節的數據,所以默認時可以是unsigned int 也可以是unsigned long,值得一提的是:因為這里的是32位平台,所以是一樣的。
long占四個字節;
int的尺寸和平台有關系:
①在16位的系統中,int 占據2個字節
②在32位系統中,占用4個字節
因為大多數系統現在都是32位Windows XP,所以在VC++6.0情況下是一致的。