C語言基本數據類型



我們這裏只講下基本數據


2. 各種數據類型介紹
2.1 整型
整型常量的分類:基本整型、短整型、常整型、無符號整型(沒有負數),表達與範圍見表2.表2個表達說明,
如:(signed)char我們可以寫成char
()中的文字在實際應用中可以不寫,系統會默認表示爲(signed)char。

2.1.1 整型常量
整型常量即整常數。在C語言中,整常數可用以下三種形式表示:
(1)十進制整數。 
如:123, -456.4。
(2)八進制整數。以數字0開頭的數是八進制數。
如:0123表示八進制數123,等於十進制數83
- 011表示八進制數-11, 即十進制數-9。
(3)十六進制整數。以0x或X開頭的數是16進制數。
如:0x123,代表16進制數123,等於十進制數 291。 
-0x12等於十進制數-18
-0X8000L,16進制長整型,等於十進制數32768

2.1.2 C語言如何表示
1) 若要表示一個長整型常量,則應該在一個整型常量後加一個字母后綴l或L。
如: long i; i=200l;
注意:如果一個足夠大的數,即使面值在長整型範圍內,但數字後未加字母l,也不可代表長整型。
2) 無論是短整型還是長整型,都被識別爲有符號整型,無符號整數應該在數字末尾加上u或U,長整型無符號整數常數,加lu或LU
注意:無符號常量不能表示成小於0的負數。
3)一個整數,如果其值在-32768~+32767範圍內,認爲它是int型,它可以賦值給int型和long int型變量。
一個整數,如果其值超過了上述範圍,而在-2147483637~+2147483647範圍內,則認爲它是爲長整型。可以將它賦值給一個long int型變量。
 

2.2 實型
實型也稱浮點型
2.2.1 實型常量
實型常量只能用十進制形式表示。
1)小數形式:0.123 345.0 -34. .679 0.0 
小數點不能省略,不能只有一個小數點
絕對值小於1的實型常量,其小數點前面的零可以省略,如;0.123可寫爲.123,-0.0123e-5可寫爲.0123e-5。 
2)指數形式:指數部分前加字母e或E 
1.2345e3、12.345E2、1.2345e+3 
指數部分必須是整數,字母e或E之前必須有數字,字母e或E 前後以及數字之間不得插空格。
在字母e(或E)之前的小數部分中,小數點左邊應有一位(且只能有一位)非零的數字.
例如: 123.456可以表示爲:123.456e0, 12.3456e1, 1.23456e2, 0.123456e3, 0.0123456e4, 0.00123456e
其中的1.23456e3稱爲“規範化的指數形式”。

2.2.2 單精度浮點數(float)與雙精度浮點數(double)的區別如下:
1)在內存中佔有的字節數不同
單精度浮點數在機內佔4個字節
雙精度浮點數在機內佔8個字節
2)有效數字位數不同
單精度浮點數有效數字8位
雙精度浮點數有效數字16位
3)所能表示數的範圍不同
單精度浮點的表示範圍:-3.40E+38 ~ +3.40E+38
雙精度浮點的表示範圍:-1.79E+308 ~ +1.79E+308
4)在程序中處理速度不同
一般來說,CPU處理單精度浮點數的速度比處理雙精度浮點數快.

2.3字符型數據 
2.3.1 字符型常量
C語言的字符常量是ASCll碼字符集裏的一個字符,包括字母(大、小寫有區別)、數字和標點符號以及特殊字符等,均爲半角字符,一個字符常量在內存中佔1個字節,因此字符常量不能是全角字符。C語言字符常量有三種表示方法:
1)普通字符常量:用單引號
'a' 'A' '0' ' ' '+'
單引號內,不能使單撇或反斜槓。單引號內空格也是一個字符常量,但不能寫成兩個連續的單引號 
2)用該字符的ASCll碼值表示的字符常量
例如:
十進制數65表示大寫字母'A' 
十六進制數0X41也表示'A ' 
八進制數0101表示大寫字母' A ' 。
一些不能用符號表示的特殊字符(如控制符等),可以用ASCll碼值來表示,如換行可用10表示,也可用十六進制數0x0a或八進制數012來表示
3)轉義字符:是以' \ '開頭的用單引號括起來的字符序列。

例如:
用 '\r'表示回車
用'\n'表示換行。換行也可用‘\12’或‘\012’換行還可用'\xa'或'\x0a'反斜槓後跟十六進制數表示
'\101' 用八進制表示的字符A
在C語言中,字符常量與整數是互通的。經常將字符常量等價爲整數參與運算:
如:'A' +32 結果爲 'a'        '0' - 48 結果爲 0

2.3.3 字符數據在內存中的存儲形式及其使用方法 
一個字符常量存放到一個字符變量中,實際上並不是把該字符的字型放到內存中去,而是將該字符的相應的ASCII代碼放到存儲單元中。這樣使字符型數據和整型數據之間可以通用。

注意: 一個字符數據既可以以字符形式輸出,也可以以整數形式輸出。

2.4 字符串
2.4.1 字符串常量表示形式:用雙引號括起來的字符序列。
如:"How do you do.", "CHINA", "a" , "$123.45" , "%d\n"  ," "
注意:兩個連續的雙引號也是字符串常量,稱爲空串,佔一個字節存放'\0' 
字符串的存儲形式:存儲時每個字符串末尾自動加一個 '\0'作爲字符串結束標誌。
如:如果有一個字符串常量"CHINA" ,實際上在內存中是:


它佔內存單元不是5個字符,而是6個字符,最後一個字符爲'\0' 。但在輸出時不輸出'\0' 。

2.4.2 字符和字符串的區別
字符類型只有一個字節,就是隻能儲存一個字符,單個字母或者數字,例如a或者1,字符類型的賦值應該用' '號。例如 char a='a';就是將字母a賦給變量a。
字符串可以儲存多個字符,例如儲存一句"I am fine"等。字符串的賦值要用" ";string a="I am fine!"就是將I am fine!這個字符串賦給字符串變量。值得注意的是字符串變量會在最後加多一個結束標誌'\0'。
例如char a='a',佔一個字節,而string a="a"則佔兩個字節,因爲除了儲存字母a外還要儲存'\0'這標誌。所以char a="a"這個語句是不對的,因爲變量a只佔一個字節,而"a"則佔兩個字節,所以上述賦值表達式是非法的。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章