c++ 中關於int,unsigned int , short的關系與應用


轉載:http://www.cppblog.com/xyjzsh/archive/2010/10/20/130554.aspx?opt=admin

 

int類型比較特殊,具體的字節數同機器字長和編譯器有關。如果要保證移植性,盡量用__int16 __int32 __int64吧
__int16、__int32這種數據類型在所有平台下都分配相同的字節。所以在移植上不存在問題。
所謂的不可移植是指:在一個平台上編寫的代碼無法拿到另一個平台上運行時,不能達到期望的運行結果。
例如:在32為平台上(所謂32位平台是指通用寄存器的數據寬度是32)編寫代碼,int 類型分配4個字節,而在16位平台是則分配2個字節,那么在16位上編譯出來的exe,
其中是為int分配2字節,而在32位平台上運行時,會按照4個字節來解析,顯然會出錯誤的!!
而對於非int行,目前為止,所有的類型分配的字節數都是兼容的,即不同平台對於同一個類型分配相同的字節數!!
建議:在代碼中盡量避免使用int類型,根據不同的需要可以用short,long,unsigned int 等代替。
下面是各個類型一覽表【轉】

64位指的是cpu通用寄存器的數據寬度是64位的。

數據類型名稱

字節數

別名

取值范圍

int

*

signed,signed int

操作系統決定,即與操作系統的"字長"有關

unsigned int

*

unsigned

由操作系統決定,即與操作系統的"字長"有關

__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

*

由操作系統決定,即與操作系統的"字長"有關

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

類型標識符

類型說明

長度
(字節)

范圍

備注

char

字符型

1

-128 ~ 127

-27 ~ (27 -1)

unsigned char

無符字符型

1

0 ~ 255

0 ~ (28 -1)

short int

短整型

2

-32768 ~ 32767

2-15 ~ (215 - 1)

unsigned short int

無符短整型

2

0 ~ 65535

0 ~ (216 - 1)

int

整型

4

-2147483648 ~ 2147483647

-231 ~ (231 - 1)

unsigned int

無符整型

4

0 ~ 4294967295

0 ~ (232-1)

float

實型(單精度)

4

1.18*10-38 ~ 3.40*1038

7位有效位

double

實型(雙精度)

8

2.23*10-308 ~ 1.79*10308

15位有效位

long double

實型(長雙精度)

10

3.37*10-4932 ~ 1.18*104932

19位有效位


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM