1. 程式人生 > >C語言中各個資料型別的取值範圍

C語言中各個資料型別的取值範圍

因為CPU的差異,各系統中的資料型別所佔的位元組數(bytes)不同,二進位制位數(bit)也不同。那麼怎樣才能知道自己系統的資料型別的位元組數,位數呢?

授之以魚不如授之以漁,大家可以自己從電腦裡獲取這些資訊。

首先我們知道1個位元組等於8個位,可以用sizeof()關鍵字設計以下程式解決:

/*獲取當前作業系統的位元組數(bytes)和位數(bit)*/
#include<stdio.h>
int main(void)
{
printf("int:bytes %d;bit %d", sizeof(int), sizeof(int) * 8);
return 0;
}

 

由此可得知樓主系統的整數(int)所佔位元組數是4,位數為32

而取值範圍則可以用極限值符號(極限值符號定義在 limits.h 標頭檔案中,以下會詳細介紹)來獲得
下面以char型別為例:

/*獲取char資料型別的取值範圍*/
#include<stdio.h>
#include<limits.h>
int main(void)
{
printf("char:MIN %d;MAX %d", CHAR_MIN, CHAR_MAX);

return 0;
}

 

有符號整數型別

型別名稱 位元組數 取值範圍
signed char 1 -2^7 ~ 2^7-1
short int 或 short 2 -2^15 ~ 2^15-1


int 4 -2^31 ~ 2^31-1
long int 或 long 4 -2^31 ~ 2^31-1
long long int 或 long long 8 -2^63 ~ 2^63-1
無符號整數型別

型別名稱 位元組數 取值範圍
unsigned char 1 0 ~ 2^8
unsigned short int 或 unsigned short 2 0 ~ 2^16
unsigned int 4 0 ~ 2^32
unsigned long int 或 unsigned long 4 0 ~ 2^32
unsigned long long int 或 unsigned long long 8 0 ~ 2^64


浮點型別

型別名稱 位元組數 取值範圍
float 4 -/+3.4e38(精確到6位小數)
double 8 -/+1.7e308(精確到15位小數)
long double 12 -/+1.19e4932(精確到18位小數)
極限值符號

表示有符號整數型別的極限值符號

型別名稱 下限 上限
char CHAR_MIN CHAR_MAX
short SHRT_MIN SHRT_MAX
int INT_MIN INT_MAX
long LONG_MIN LONG_MAX
long long LLONG_MIN LLONG_MAX
表示無符號整數型別的極限值符號

型別名稱 下限 上限
unsigned char 0 UCHAR_MAX
unsigned short 0 USHRT_MAX
unsigned int 0 UINT_MAX
unsigned long 0 ULONG_MAX
unsigned long long 0 ULLONG_MAX
表示浮點型別的極限值符號

型別名稱 下限 上限
float FLT_MIN FLT_MAX
double DBL_MIN DBL_MAX
long double LDBL_MIN LDBL_MAX