一:常用資料型別對應位元組數
可用如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很簡便的幫忙解決了這個問題,不僅利於理解,而且直接可在不同的機器得到答案。如何獲得各資料型別的取...