標(biāo)題: c++ 中關(guān)于int,unsigned int , short的關(guān)系與應(yīng)用 [打印本頁]

作者: 51黑tt    時(shí)間: 2016-3-5 17:14
標(biāo)題: c++ 中關(guān)于int,unsigned int , short的關(guān)系與應(yīng)用
c++ 中關(guān)于int,unsigned int , short的關(guān)系與應(yīng)用int類型比較特殊,具體的字節(jié)數(shù)同機(jī)器字長和編譯器有關(guān)。如果要保證移植性,盡量用__int16 __int32 __int64吧
__int16、__int32這種數(shù)據(jù)類型在所有平臺(tái)下都分配相同的字節(jié)。所以在移植上不存在問題。
所謂的不可移植是指:在一個(gè)平臺(tái)上編寫的代碼無法拿到另一個(gè)平臺(tái)上運(yùn)行時(shí),不能達(dá)到期望的運(yùn)行結(jié)果。
例如:在32為平臺(tái)上(所謂32位平臺(tái)是指通用寄存器的數(shù)據(jù)寬度是32)編寫代碼,int 類型分配4個(gè)字節(jié),而在16位平臺(tái)是則分配2個(gè)字節(jié),那么在16位上編譯出來的exe,
其中是為int分配2字節(jié),而在32位平臺(tái)上運(yùn)行時(shí),會(huì)按照4個(gè)字節(jié)來解析,顯然會(huì)出錯(cuò)誤的!!

而對(duì)于非int行,目前為止,所有的類型分配的字節(jié)數(shù)都是兼容的,即不同平臺(tái)對(duì)于同一個(gè)類型分配相同的字節(jié)數(shù)!!

建議:在代碼中盡量避免使用int類型,根據(jù)不同的需要可以用short,long,unsigned int 等代替。

下面是各個(gè)類型一覽表【轉(zhuǎn)】
64位指的是cpu通用寄存器的數(shù)據(jù)寬度是64位的。

數(shù)據(jù)類型名稱
字節(jié)數(shù)
別名
取值范圍
int
*
signed,signed int
操作系統(tǒng)決定,即與操作系統(tǒng)的"字長"有關(guān)
unsigned int
*
unsigned
由操作系統(tǒng)決定,即與操作系統(tǒ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
–9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
bool
1
false 或 true
char
1
signed char
–128 到 127
unsigned char
1
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
*
由操作系統(tǒng)決定,即與操作系統(tǒng)的"字長"有關(guān)
float
4
3.4E +/- 38 (7 digits)
double
8
1.7E +/- 308 (15 digits)
long double
8
1.7E +/- 308 (15 digits)
wchar_t
2
__wchar_t
0 到 65,535

類型標(biāo)識(shí)符類型說明長度
(字節(jié))
范圍備注
char字符型1-128 ~ 127-27 ~ (27 -1)
unsigned char無符字符型10 ~ 2550 ~ (28 -1)
short int短整型2-32768 ~ 327672-15 ~ (215 - 1)
unsigned short int無符短整型20 ~ 655350 ~ (216 - 1)
int整型4-2147483648 ~ 2147483647-231 ~ (231 - 1)
unsigned int無符整型40 ~ 42949672950 ~ (232-1)
float實(shí)型(單精度)41.18*10-38 ~ 3.40*10387位有效位
double實(shí)型(雙精度)82.23*10-308 ~ 1.79*1030815位有效位
long double實(shí)型(長雙精度)103.37*10-4932 ~ 1.18*10493219位有效位









歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1