各資料型別的取值範圍及占用位元組數。。

2021-09-08 03:15:19 字數 1395 閱讀 4002

一:常用資料型別對應位元組數

可用如sizeof(char),sizeof(char*)等得出

32位編譯器:

char :1個位元組

char*(即指標變數): 4個位元組(32位的定址空間是2^32, 即32個bit,也就是4個位元組。同理64位編譯器)

short int : 2個位元組

int: 4個位元組

unsigned int : 4個位元組

float: 4個位元組

double: 8個位元組

long: 4個位元組

long long: 8個位元組

unsigned long: 4個位元組

64位編譯器:

char :1個位元組

char*(即指標變數): 8個位元組

short int : 2個位元組

int: 4個位元組

unsigned int : 4個位元組

float: 4個位元組

double: 8個位元組

long: 8個位元組

long long: 8個位元組

unsigned long: 8個位元組、

二:在16位環境下,int/unsigned int 佔16位,long/unsigned long佔32位

在32位環境下,int佔32位,unsigned int佔16位,long/unsigned long佔32位

何時需要使用:

long 和 int 範圍是[-2^31,2^31),即-2147483648~2147483647,而unsigned範圍是[0,2^32),即0~4294967295,所以常規的32位整數只能夠處理40億左右,當遇到比40億大的多的數就要用到64位。

64位使用範圍:

不 同的編譯器對64位整數的擴充套件有所不同,vc使用__int64/unsigned __int64,範圍是[-2^63, 2^63)和[0,2^64),即-9223372036854775808~9223372036854775807與 0~18446744073709551615(約1800億億)。

注意點:

1、編譯器不同導致使用64位的申明方式不同;

2、long long / unsigned long long 一般是linux下申明方式、如:g++

3、__int64 /unsigned __int64一般是windows下使用64位的申明方式,如:vs

4、在賦值時需要注意加上ll進行顯式賦值;

5、當進行64位與 32位的混合運算時,32位整數會被隱式轉換成64位整數。

6、輸出printf("");,long long使用%lld輸出,__int64使用%i64d,無符號使用u替代d即可。

7、測試下來編譯器一般都支援2種操作,不必太過糾結,怎麼使用看個人喜歡。

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

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

C 中各資料型別取值範圍

1.字元型別 型別 名稱位元組數 範圍signed char 有符號字元型 1 128 127 unsigned char 無符號字元型 10 255 2.整數型別 型別名稱 位元組數範圍 signed int 有符號整型 4 2147483648 2147483647 unsigned int 無...

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

以前學了那麼久的c,一直不清楚各資料型別佔多少位,取值範圍是多少。因為書上都說的不具體,只是說int一般是16位或者32位,short一般16位,long物件一般是32位等 等。c程式語言 中的練習2 1很簡便的幫忙解決了這個問題,不僅利於理解,而且直接可在不同的機器得到答案。如何獲得各資料型別的取...