基本內建型別
char
//字元資料型別
short
//短整型
int//整形
long
//長整型
long
long
//更長的整形
float
//單精度浮點數
double
//雙精度浮點數
使用這個型別開闢的記憶體空間大小(大小決定了適用範圍)。
如何看待記憶體空間的視角。
在32位平台下,任何指標型別都只佔4個位元組。
整形家族:
char
unsigned
char
signed
char
short
unsigned
short
[int
]signed
short
[int
]int
unsigned
intsigned
intlong
unsigned
long
[int
]signed
long
[int
]
浮點數家族:
float
double
構造型別:
陣列型別
結構體型別 struct
列舉型別 enum
聯合型別 union指標型別
int
*pi;
char
*pc;
float
* pf;
void
* pv;
空型別:
void 表示空型別(無型別)整形在記憶體中的儲存:通常應用於函式的返回型別、函式的引數、指標型別》
乙個變數建立是要在記憶體中開闢空間的。空間的大小是根據不同的型別而決定的。
計算機中的符號數有三種表示方法,即原碼、反碼和補碼。三種方法均有符號位和數值位兩部分,符號位 0 表示正數, 符號位 1 表示負數,而數值位,三種表示方法各不相同。原碼:直接將二進位制按照正負數的形式翻譯成二進位制就可以了。
反碼:將原碼的符號位不變,其他位依次按位取反就可以得到了。
補碼:反碼 +1 就得到補碼。
正數的原碼、反碼、補碼相同。
大端(儲存)模式,是指資料的低位儲存在記憶體的高位址中,而資料的高位,儲存在記憶體的低位址中;小端(儲存)模式,是指資料的低位儲存在記憶體的低位址中,而資料的高位,,儲存在記憶體的高位址中。
為什麼有大端和小端:
根據國際標準ieee 754,任意乙個二進位制浮點數v可以表示成下面的形式:舉個例子:十進位制的5.0,轉化成二進位制就變成了101.0,用科學計數法表示就是 1.01 * 2^2 。那麼,按照上面v的格式,可以得出s = 0, m = 1.01,e = 2 。· (-1)^s * m * 2^e。
· (-1)^s 表示符號位,當s == 0, v為正數;當s == 1, v為負數。
· m表示有效數字,大於等於1,小於2、
· 2^e表示指數字。
如果是-5.0,s = 1, m = 1.01, e = 2 。
>2. ieee 754規定:對於32位浮點數,最高的1位是符號位s, 接著的8位是指數e,剩下的23位為有效數字m。
e和m的儲存方式也是ieee 754的規定,記住就好。
對於64位浮點數,最高的1位是符號位s,接著的11位是指數e,剩下的52位為有效數字m。
e的兩種特殊取值:
當e全為0的時候,即2的次方為0 - 127 為2^-127次方,所以,當s = 0時,乙個正數的2^-127次方,是乙個從數軸的右邊無線趨近於0的數字;而當s = 1時,乙個負數的2^-127次方是從數軸左邊無線趨近於0的數字。
所以當e全為0的時候,實際就表示的是±0,所以浮點數不可以在程式**現 與0去比較(浮點數 == 0),而是要跟一段範圍去比較。
當e全為1的時候(如果m全為0),即2的次方255 - 127 = 128,所以當s = 0時,表示1 * 2^128次方,當s = 1時表示-1*2^128次方。
所以當e全為1時,其實表示的就是這個浮點數的取值範圍。
C語言 資料在記憶體中的儲存
字元型資料 1.字元與字元 把字元的相對應的ascii碼 整數,對映關係見ascii碼表 放到儲存碼單元中,而這些ascii 值在計算機中同樣以二進位制補碼的形式存放的。2.字元變數 字元型資料的儲存空間和值的範圍 32位操作平台 型別位元組數 取值範圍 signed char 有符號字元數 1 2...
C語言 資料在記憶體中的儲存
得從整形在記憶體中的儲存說起 計算機中的有符號數有三種表示方法,即原碼 反碼和補碼。三種表示方法均有符號位和數值位兩部分,符號位都是用0表示 正 用1表示 負 而數值位三種表示方法各不相同。原碼直接將二進位制按照正負數的形式翻譯成二進位制就可以。反碼將原碼的符號位不變,其他位依次按位取反就可以得到了...
C語言 資料在記憶體中的儲存
char 字元資料型別 1個位元組 short 短整型 2個位元組 int 整型 4個位元組 long 長整型 4個位元組 long long 更長的整型 8個位元組 float 單精度浮點型 4個位元組 double 雙精度浮點型 8個位元組1,使用這個型別開闢記憶體空間的大小 2,如何看待記憶體...