整型資料型別及其取值範圍詳解

2021-10-08 10:40:22 字數 3540 閱讀 6034

c資料型別

最小值最大值

[signed] char

-128

127unsigned char

0255

short

-32768

32767

unsigned short

065535

int-2 147 483 648

2 147 483 647

unsigned

04 294 967 295

long

-2 147 483 648

2 147 483 647

unsigned long

04 294 967 295

int32_t

-2 147 483 648

2 147 483 647

uin32_t

04 294 967 295

int64_t

-9 223 372 036 854 775 808

9 223 372 036 854 775 807

uint64_t

018 446 744 073 709 551 615

32位程式上c語言整型資料型別的典型取值範圍

c資料型別

最小值最大值

[signed] char

-128

127unsigned char

0255

short

-32768

32767

unsigned short

065535

int-2 147 483 648

2 147 483 647

unsigned

04 294 967 295

long

-9 223 372 036 854 775 8089 223 372 036 854 775 807

unsigned long

018 446 744 073 709 551 615

int32_t

-2 147 483 648

2 147 483 647

uin32_t

04 294 967 295

int64_t

-9 223 372 036 854 775 808

9 223 372 036 854 775 807

uint64_t

018 446 744 073 709 551 615

64位程式上c語言整型資料型別的典型取值範圍

圖中的注意事項:

取值範圍不是對稱的———負數的範圍比整數的範圍大1.當我們考慮如何表示負數的時候,會看到為什麼會是這樣子。

c資料型別

最小值最大值

[signed] char

-127

127unsigned char

0255

short

-32767

32767

unsigned short

065535

int-32767

32767

unsigned

065535

long

-2 147 483 647

2 147 483 647

unsigned long

04 294 967 295

int32_t

-2 147 483 648

2 147 483 647

uin32_t

04 294 967 295

int64_t

-9 223 372 036 854 775 808

9 223 372 036 854 775 807

uint64_t

018 446 744 073 709 551 615

c語言的整型資料型別的保證的取值範圍。c語言標準要求這些資料型別必須至少具有這樣的取值範圍

c語言標準定義了每種資料型別必須能夠表示的最小的取值範圍。如上圖所示,它的取值範圍與32位和64位所示的典型實現一樣或者小一些。特別地,除了固定大小的資料型別是例外,我們看到它們只要求正數和負數的取值範圍是對稱的。此外,資料型別int可以用2個位元組的數字來實現。這幾乎退到了16位機器的時代。還可以看到,long的大小可以用4個位元組的數字來實現,對32位程式來說這是很典型的。固定大小的資料型別保證數值的範圍與32位程式上c語言整型資料型別的典型取值範圍一致。包括負數與正數的不對稱性。

c語言支援多種整型資料型別——表示有限範圍的整數。如圖所示,其中給出了「典型」32位和64位機器的取值範圍。每種型別都能用關鍵字來指定大小,這些關鍵字包括cha

r、sh

ort、

long

char、short、long

char、s

hort

、lon

g,同時還可以指示被表示的數字是非負數(宣告為uns

igne

dunsigned

unsign

ed),或者可能是負數(預設即可)。為這些不同的大小分配的位元組數可根據程式編譯為32位gcc -m32 prog.c或者64位gcc -m64 prog.c而有所不同。根據位元組分配,不同的大小所能表示的值的範圍是不同的。特別注意,這裡給出來的唯一乙個與機器有關的取值範圍是大小指示符long的。大多數64位的機器使用8個位元組的表示。比32位機器上使用的4個位元組的表示的取值範圍大的多

補充:字資料大小

每台計算機都有乙個字長(word size),指明指標資料的標稱大小(nominal size)。

因為虛擬位址是以這樣的乙個字來編碼的,所以字長決定的最重要的系統引數就是虛擬位址空間的最大大小。也就是說,對於乙個字長為w

ww位的機器而言,虛擬位址的範圍位0−2

w−10 - 2^w-1

0−2w−1

,程式最多訪問2

w2^w

2w個位元組最近這些年,出現了大規模的從32位字長機器到64位字長機器的遷移。這種情況首先出現在為大型科學和資料庫應用設計的高階機器上,之後是台式電腦和膝上型電腦,最近則出現在智慧型手機的處理器上。32位字長限制虛擬位址空間為4千兆位元組(寫作4gb),也就是說,剛剛超過4×1

094\times10^9

4×10

9個位元組。擴充套件到64位字長使得虛擬位址空間為16eb,大約是1.84×1

0191.84\times 10^

1.84×1

019位元組

基本c資料型別的典型大小(以位元組為單位)。分配的位元組數受如何編譯的影響而變化。

基本資料型別 取值範圍

基本資料型別 1.整型和浮點型 2.資料範圍 1.整型 char,short,int,long,long long 有無符號和有符號之分,即可以新增unsigned long a 1234l long long b 1234ll d ld lld 浮點型 float,double f lf 2.32...

各種資料型別的取值範圍

速查表 char 128 127 1 byte short 32767 32768 2 bytes unsigned short 0 65536 2 bytes int 2147483648 2147483647 4 bytes unsigned int 0 4294967295 4 bytes l...

C 各資料型別取值範圍(備忘)

各資料型別取值範圍 bool型為布林型,佔1個位元組,取值0或1。bool型為int型,一般認為佔4個位元組,取值true false error。sbyte型為有符號8位整數,佔1個位元組,取值範圍在128 127之間。bytet型為無符號16位整數,佔2個位元組,取值範圍在0 255之間。sho...