int類(lèi)型比較特殊,具體的字節(jié)數(shù)同機(jī)器字長(zhǎng)和編譯器有關(guān)。如果要保證移植性,盡量用__int16 __int32 __int64吧 __int16、__int32這種數(shù)據(jù)類(lèi)型在所有平臺(tái)下都分配相同的字節(jié)。所以在移植上不存在問(wèn)題。 所謂的不可移植是指:在一個(gè)平臺(tái)上編寫(xiě)的代碼無(wú)法拿到另一個(gè)平臺(tái)上運(yùn)行時(shí),不能達(dá)到期望的運(yùn)行結(jié)果。 例如:在32為平臺(tái)上(所謂32位平臺(tái)是指通用寄存器的數(shù)據(jù)寬度是32)編寫(xiě)代碼,int 類(lèi)型分配4個(gè)字節(jié),而在16位平臺(tái)是則分配2個(gè)字節(jié),那么在16位上編譯出來(lái)的exe, 其中是為int分配2字節(jié),而在32位平臺(tái)上運(yùn)行時(shí),會(huì)按照4個(gè)字節(jié)來(lái)解析,顯然會(huì)出錯(cuò)誤的!! 而對(duì)于非int行,目前為止,所有的類(lèi)型分配的字節(jié)數(shù)都是兼容的,即不同平臺(tái)對(duì)于同一個(gè)類(lèi)型分配相同的字節(jié)數(shù)!! 建議:在代碼中盡量避免使用int類(lèi)型,根據(jù)不同的需要可以用short,long,unsigned int 等代替。
下面是各個(gè)類(lèi)型一覽表【轉(zhuǎn)】 64位指的是cpu通用寄存器的數(shù)據(jù)寬度是64位的。 數(shù)據(jù)類(lèi)型名稱(chēng) | 字節(jié)數(shù) | 別名 | 取值范圍 | int | * | signed,signed int | 由操作系統(tǒng)決定,即與操作系統(tǒng)的"字長(zhǎng)"有關(guān) | unsigned int | * | unsigned | 由操作系統(tǒng)決定,即與操作系統(tǒng)的"字長(zhǎng)"有關(guān) | __int8 | 1 | char,signed char | –128 到 127 | __int16 | 2 | short,short int,signed short int | –32,768 到 32,767 | __int32 | 4 | signed,signed int | –2,147,483,648 到 2,147,483,647 | __int64 | 8 | 無(wú) | –9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 | bool | 1 | 無(wú) | false 或 true | char | 1 | signed char | –128 到 127 | unsigned char | 1 | 無(wú) | 0 到 255 | short | 2 | short int,signed short int | –32,768 到 32,767 | unsigned short | 2 | unsigned short int | 0 到 65,535 | long | 4 | long int,signed long int | –2,147,483,648 到 2,147,483,647 | long long | 8 | none (but equivalent to __int64) | –9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 | unsigned long | 4 | unsigned long int | 0 到 4,294,967,295 | enum | * | 無(wú) | 由操作系統(tǒng)決定,即與操作系統(tǒng)的"字長(zhǎng)"有關(guān) | float | 4 | 無(wú) | 3.4E +/- 38 (7 digits) | double | 8 | 無(wú) | 1.7E +/- 308 (15 digits) | long double | 8 | 無(wú) | 1.7E +/- 308 (15 digits) | wchar_t | 2 | __wchar_t | 0 到 65,535 |
類(lèi)型標(biāo)識(shí)符 | 類(lèi)型說(shuō)明 | 長(zhǎng)度 (字節(jié)) | 范圍 | 備注 | char | 字符型 | 1 | -128 ~ 127 | -27 ~ (27 -1) | unsigned char | 無(wú)符字符型 | 1 | 0 ~ 255 | 0 ~ (28 -1) | short int | 短整型 | 2 | -32768 ~ 32767 | 2-15 ~ (215 - 1) | unsigned short int | 無(wú)符短整型 | 2 | 0 ~ 65535 | 0 ~ (216 - 1) | int | 整型 | 4 | -2147483648 ~ 2147483647 | -231 ~ (231 - 1) | unsigned int | 無(wú)符整型 | 4 | 0 ~ 4294967295 | 0 ~ (232-1) | float | 實(shí)型(單精度) | 4 | 1.18*10-38 ~ 3.40*1038 | 7位有效位 | double | 實(shí)型(雙精度) | 8 | 2.23*10-308 ~ 1.79*10308 | 15位有效位 | long double | 實(shí)型(長(zhǎng)雙精度) | 10 | 3.37*10-4932 ~ 1.18*104932 | 19位有效位
|
|