1. 程式人生 > >C語言基本資料型別

C語言基本資料型別

一,整型
  char    short    int  long      、long long(C99新加入),再與unsigned搭配,共有10種類型



c,八進位制和十六進位制的整數常量(無負數)

234u,234,
在C語言中預設的數字為十進位制。如果在一個數字前面加上字首0(零),就可以表示為八進位制了

01
如果在一個數字前面加上字首0x或者0X,就可以表示為十六進位制

0xff
(注意:不論是十進位制還是八進位制還是十六進位制表示法,最終被轉換成的機器語言的值都是一樣的)

e,整數溢位(省略)

佔用位元組大小的排列順序為 short <= int <= long,C標準保證short至少為16位,int不少於short,long至少為32位,  並且不少於int,   Long long 至少不少於64位.
大多數情況下,採用最小標準,long long型別為64位,long型別為32為,short 為16位,int型別則較多,為16位或32位
b,常量
不論是十進位制、八進位制還是十六進位制的常量,根據數字大小,以int、long、unsigned long、long long、unsigned long long的順序依次適應儲存
可以加字尾。字尾L或l、LL、u或U、ul等

3,字元char型別(屬於整型)
a,一個char型別變數所佔用的位元組與平臺相適應,C保證char型別所佔記憶體足夠大,以儲存其所在系統上的基本字符集
(注:C語言中的一個位元組定義為一個char變數所佔用的位數)
b,大多數情況下佔用8個位元組,取值範圍為-127到128。可以在前面加上unsigned使其取值範圍為0-255以便表示擴充套件的ASCII碼
字元常量  ’A'
d,4種賦值方法:char x = 'A'; //直接用字元賦值
char x = 65; //用ASCII碼賦值
char x = '\007'; //八進位制形式。格式為\0oo 可以省略前面的零
char x = '\x7'; //十六進位制形式。格式為\xhhh或\Xhhh
(注意:65本來應該是一個常量,而這個常量應該被存為int型別,因此當被賦值的時候,只讀取最後一個位元組的內容
八進位制和十六進位制形式的轉義字元形式還可以用於字串中)
e,轉義字元序列

\a----------報警 \b----------退格 \f----------走紙 \n----------換行
\r----------回車 \t----------水平製表符\v----------垂直製表符
\\------反斜槓(\) \‘---------單引號(') \"----------雙引號("")
\?----------問號(?) \0ooo-------八進位制值(o表示一個八進位制數字)
\xhhh----------十六進位制值(h表示一個十六進位制數字)
二,浮點型
1,float、double和long double(C99新加入)
a,float型別:
有效數字至少6位
取值範圍至少為10的-37次方到10的37次方
儲存方式:以二進位制的指數形式用32位儲存一個浮點數,其中8位用於表示指數及其符號,24位用於表示尾數
b,double型別:
有效數字至少10位
取值範圍同float,至少為10的-37次方到10的37次方
儲存方式:以二進位制的指數形式用64位儲存一個雙精度數,指數和尾數的位數隨系統不同而不同
2,宣告方法同上
3,浮點常量
浮點常量是指一個常量數字中至少存在一個小數點或者指數部分(區別於int常量)
預設情況下編譯器將浮點常量視為double型別,佔8個位元組,以便使常量之間的計算更加精確。
如果要更改為float型別,可以在後面加上f或F,如果要更改為long double型別,可以在後面加上l或L
還可以用十六進位制來表示浮點常量,那麼就需要在前面加上0x或0X接著就是十六進位制數字,但是指數P或p,表示是2的指數
比如:0xa.1fp10-------1010.00011111 * 2^10 = 101000011111 換成10進位制就是10364

(注意:列印double型別的時候,預設只有6位有效數字,要列印更多的有效位可以在f前面加上.7 .8等)
5,浮點值的上溢和下溢
上溢:當計算結果是一個達到不能在計算機裡面表達的時候,就會發生上溢。發生上溢之後,計算得到的值為INF,表示無窮大
下溢:當一個數字的尾數和指數已經是最小了,在進行運算以時這個數字更小的時候,就會發生下溢。發生下溢的時候,會損失有效數字的精度
6,浮點數的舍入誤差
當一個數字的精度太大的時候,將這個數字進行加減運算,由於計算機能夠表示出的有效位數有限,因此不能正確計算出結果
比如:2e20 + 1 - 2e20 在第21位加上1,計算機是做不到的 如果是2e4 + 1 - 2e4 結果是1