C語言的數(shù)據(jù)類型:基本數(shù)據(jù)類型劳跃、構(gòu)造數(shù)據(jù)類型、指針類型浙垫、空類型刨仑。
- 構(gòu)造數(shù)據(jù)類型:是根據(jù)已定義的一個(gè)或多個(gè)數(shù)據(jù)類型用構(gòu)造方法來定義的郑诺。一個(gè)構(gòu)造類型的值可以分解成若干個(gè)“成員”或“元素”
- 指針類型: 指針是一種特殊的,同時(shí)又是具有重要作用的數(shù)據(jù)類型杉武。其值用來表示某個(gè)變量在內(nèi)存儲器中的地址辙诞。
常量與變量
常量:程序執(zhí)行過程中其值不發(fā)生改變的量。
- 直接常量:
a.整型常量:1艺智,100倘要,29,-10
b.實(shí)型常量:5.2十拣,6.4封拧,-0.5
c.字符常量:‘a(chǎn)’,'b' - 符號常量:用宏來代表一個(gè)常量。在C語言中夭问,可以使用一個(gè)標(biāo)識符來表示一個(gè)常量泽西,稱之為符號常量。
符號常量在使用之前需要先定義缰趋,其一般形式為: - () #define 標(biāo)識符 常量
其中#define是一條預(yù)處理命令捧杉,稱為紅定義命令,其功能是把該標(biāo)識符定義為其后的常量值秘血。
習(xí)慣上符號常量的標(biāo)識符使用大寫字母味抖,變量標(biāo)識符使用小寫字母,以示區(qū)別 - 例如:#define PI 3.1415926
變量:其值可以改變的量成為變量
一個(gè)變量應(yīng)該有一個(gè)名字灰粮,在內(nèi)存中占有一定的存儲單元仔涩,變量在使用之前必須先定義。
int a=3; int是a的數(shù)據(jù)類型粘舟,a是變量名熔脂,3是變量值。
整型數(shù)據(jù)
1.整型常量
整型常量就是整常數(shù)柑肴,C語言中的常整數(shù)有八進(jìn)制霞揉,十六進(jìn)制,十進(jìn)制三種晰骑。
(1)十進(jìn)制整常數(shù):十進(jìn)制常整數(shù)沒有前綴适秩,其數(shù)碼為0~9
- 合法的十進(jìn)制整常數(shù),123硕舆,2隶症,4356,-100.
- 不合法的十進(jìn)制整常數(shù):078岗宣,78A(含有非十進(jìn)制數(shù)碼)
- 在程序中各個(gè)前綴用來區(qū)分各種進(jìn)制數(shù)。
(2)八進(jìn)制常整數(shù):八進(jìn)制整數(shù)必須以0開頭淋样,即以0作為八進(jìn)制數(shù)的前綴耗式。數(shù)碼為0~7。八進(jìn)制通常是無符號數(shù)。 - 合法的八進(jìn)制整常數(shù):015(13)刊咳,0101(64)彪见,0177777(65535)
- 不合法的八進(jìn)制整常數(shù):256,03A2娱挨,-0127
(3)十六進(jìn)制整常數(shù):十六進(jìn)制整常數(shù)的前綴為0X或0x余指,其數(shù)碼為09,af或A~F, - 合法的十六進(jìn)制整常數(shù):0X2A(42),0XA0(160),0XFFFF(65535)
- 非法的十六進(jìn)制整常數(shù):5A跷坝,0X3H
實(shí)型數(shù)據(jù)
- 十進(jìn)制數(shù)形式:由0~9和小數(shù)點(diǎn)組成
- 合法實(shí)數(shù):0.0酵镜,0.12,4.567柴钻,-256.123 (必須有小數(shù)點(diǎn))
- 指數(shù)形式:由十進(jìn)制數(shù)加階碼標(biāo)志“e”或“E”以及階碼組成淮韭。
- 其一般形式為: a E n (a 為十進(jìn)制數(shù),n為十進(jìn)制整數(shù))
- 其值為 a10^n.
如:2.1e5(2.110^5) 3.7e-2(3.710^-2) 0.5e7(0.510^7)
實(shí)型變量
(1)實(shí)型變量實(shí)型數(shù)據(jù)在內(nèi)存中的存放形式
- 實(shí)型數(shù)據(jù)一般占4個(gè)字節(jié)贴届。按指數(shù)形式存儲靠粪。
|符號位 |小數(shù)部分 |指數(shù)部分 |
小數(shù)部分占的位越多,數(shù)的有效數(shù)字越多毫蚓,精度越高
指數(shù)部分占的位數(shù)越多占键,數(shù)能表示的范圍越大。
(2)實(shí)型變量的分類 - 單精度(float)元潘,雙精度(double型)畔乙,長雙精度(long double型)三類
字符變量
字符數(shù)據(jù)在內(nèi)存中的存儲形式及使用方法。
每個(gè)字符變量被分配一個(gè)字節(jié)的空間柬批,因此只能存放一個(gè)字符啸澡。字符值是以ASCII碼的形式存放在內(nèi)存單元中的。
#include <stdio.h>
int main()
{
char a,b;
a = 120;
b = 121;
printf("%c,%c\n",a,b);
printf("%d,%d\n",a,b);
return 0;
}
a=x b=y
a=120 b=121
字符串常量和字符常量是不同的量.他們有以下區(qū)別
- 字符常量是由單引號括起來的,字符串常量是由雙引號括起來的
- 字符常量只能是單個(gè)字符,字符串常量則含有一個(gè)火多個(gè)字符.
- 可以吧一個(gè)字符常量付給一個(gè)字符變量,但不能把一個(gè)字符串常量付給一個(gè)字符變量.在C語言中沒有相應(yīng)的字符串變量氮帐。我們用一個(gè)字符數(shù)組在存放一個(gè)字符變量嗅虏。
- 字符占一個(gè)字節(jié)的內(nèi)存空間.字符串常量占的內(nèi)存字節(jié)數(shù)等于字符串中的字節(jié)數(shù)加一.增加的一個(gè)字節(jié)用于存放字符'\0',這是字符串的結(jié)束標(biāo)志。
各類數(shù)據(jù)類型的混合運(yùn)算
(1) 若參與運(yùn)算量的類型不同,則先轉(zhuǎn)換成同一類型然后進(jìn)行運(yùn)算.
(2)轉(zhuǎn)換按數(shù)據(jù)長度增加的方向進(jìn)行,以保證精度不降低,如int與long運(yùn)算時(shí)上沐,先把int轉(zhuǎn)換為long皮服,然后進(jìn)行運(yùn)算。
(3)所有的浮點(diǎn)型運(yùn)算都是以雙精度進(jìn)行的,即使僅含float單精度量運(yùn)算的表達(dá)式参咙,也要先轉(zhuǎn)換為double型龄广,然后進(jìn)行運(yùn)算。
(4)char型和short運(yùn)算時(shí)蕴侧,必須先轉(zhuǎn)換為int
(5)在賦值運(yùn)算時(shí),賦值號兩邊量的數(shù)據(jù)類型不同時(shí),賦值號右邊的量的類型轉(zhuǎn)換為左邊量的類型.如果右邊量的數(shù)據(jù)類型長度大于左邊的,則會(huì)丟失一部分?jǐn)?shù)據(jù),這樣會(huì)降低精度,丟失的部分四舍五入.
![Upload Paste_Image.png failed. Please try again.]
強(qiáng)制類型轉(zhuǎn)換
- 強(qiáng)制類型轉(zhuǎn)換是通過類型轉(zhuǎn)換運(yùn)算來實(shí)現(xiàn)的择同。
- 其一般形式為:
(類型說明符)(表達(dá)式)
其功能是吧表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成類型說明符所表示的類型
int a;
(float) a; //把a(bǔ)轉(zhuǎn)換為實(shí)型
(int) (x+y) //把x+y的結(jié)果轉(zhuǎn)換為整型
注意:
(1)類型說明符和表達(dá)式都必須加括號(單個(gè)變量可以不加),
(2)無論是強(qiáng)制類型轉(zhuǎn)換還是自動(dòng)轉(zhuǎn)換净宵,都只是為了本次運(yùn)算的需要對變愛玲的數(shù)據(jù)長度進(jìn)行臨時(shí)替換敲才,而不是改變變量的類型裹纳。