第3章 基本數(shù)據(jù)類型和表達(dá)式_第1頁(yè)
第3章 基本數(shù)據(jù)類型和表達(dá)式_第2頁(yè)
第3章 基本數(shù)據(jù)類型和表達(dá)式_第3頁(yè)
第3章 基本數(shù)據(jù)類型和表達(dá)式_第4頁(yè)
第3章 基本數(shù)據(jù)類型和表達(dá)式_第5頁(yè)
已閱讀5頁(yè),還剩75頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第3章 基本數(shù)據(jù)類型和表達(dá)式張書(shū)源本章將詳細(xì)介紹C語(yǔ)言程序中使用的基本語(yǔ)法基本語(yǔ)法單位單位、數(shù)據(jù)類型數(shù)據(jù)類型、運(yùn)算符運(yùn)算符和表達(dá)式表達(dá)式。附 數(shù)的表示方法十進(jìn)制數(shù):由09的數(shù)字組成,逢十進(jìn)一。如:45、-6、0.019、-14.336二進(jìn)制數(shù):由0和1組成,逢二進(jìn)一。如:1011、11、1101 0001 0100十進(jìn)制0123456789二進(jìn)制01101110010111011110001001二進(jìn)制轉(zhuǎn)十進(jìn)制:(110)2=1*22+1*21+0*20=(6)10(1011)2=1*23+0*22+1*21+1*20=(11)10八進(jìn)制數(shù):由07組成,逢八進(jìn)一。如:65、725、-34十進(jìn)制

2、0123456789八進(jìn)制012345671011八進(jìn)制轉(zhuǎn)十進(jìn)制:(65)8=6*81+5*80=(53)10(725)8=7*82+2*81+5*80=(469)10十六進(jìn)制數(shù):由09、AF組成,逢十六進(jìn)一。如:3A、4d6f、-D340十進(jìn)制0123456789十六進(jìn)制0123456789十進(jìn)制10111213141516十六進(jìn)制ABCDEF10十六進(jìn)制轉(zhuǎn)十進(jìn)制:(3A)16=3*161+10*160=(58)10(4d6f)16=4*163+13*162+6*161+15*160=(19823)10C語(yǔ)言中的數(shù)支持十進(jìn)制、八進(jìn)制和十六進(jìn)制。書(shū)寫(xiě)時(shí):八進(jìn)制數(shù)以0開(kāi)頭,十六進(jìn)制數(shù)以0 x開(kāi)頭

3、。如:34(十進(jìn)制)034(八進(jìn)制)0 x34(十六進(jìn)制)在計(jì)算機(jī)內(nèi)部,所有數(shù)都是以二進(jìn)制方式存在的。八進(jìn)制和十六進(jìn)制都與二進(jìn)制有簡(jiǎn)單對(duì)應(yīng)關(guān)系:每位八進(jìn)制數(shù)對(duì)應(yīng)三位二進(jìn)制數(shù),每位十六進(jìn)制數(shù)對(duì)應(yīng)四位二進(jìn)制數(shù)。如:(34)8=(011 100)2(34)16=(0011 0100)2(10 1111 0111)2=(1367)8=(2f7)16通常,八進(jìn)制數(shù)和十六進(jìn)制數(shù)都可看做是二進(jìn)制數(shù)的簡(jiǎn)化寫(xiě)法。3.1 基本語(yǔ)法單位基本符號(hào):C語(yǔ)言程序中只能使用以下符號(hào):1、數(shù)字:092、字母:大小寫(xiě)英文字母3、符號(hào):+ - * / % & = _ ( ) , . ? ! # 等注:注釋文字和字符串中的

4、文字不受此限制。關(guān)鍵字(保留字):C語(yǔ)言中已經(jīng)有了固定語(yǔ)法含義的名字稱為關(guān)鍵字。關(guān)鍵字不能再作為其它用途使用。語(yǔ)句名都是關(guān)鍵字。如if、else、while、for、return等。類型名都是關(guān)鍵字。如int、double、void等。注:由于C語(yǔ)言區(qū)分大小寫(xiě),所以for是關(guān)鍵字,而For、FOR則不是。標(biāo)識(shí)符:標(biāo)識(shí)符用于給變量、常量、函數(shù)、文件等命名。標(biāo)識(shí)符的命名規(guī)則:1、由字母、數(shù)組、下劃線組成,且只能以字母或下劃線開(kāi)頭。2、標(biāo)識(shí)符中的字母區(qū)分大小寫(xiě)。3、不能與關(guān)鍵字同名。特定字:特定字是標(biāo)識(shí)符不是關(guān)鍵字,但它們?cè)贑語(yǔ)言中已經(jīng)有了較固定的用法,應(yīng)避免當(dāng)做一般標(biāo)識(shí)符使用。如:include、

5、define等用于編譯預(yù)處理。練習(xí):以下哪些符號(hào)是合法的標(biāo)識(shí)符?a3 3a x$ _b5 if IF main 3.2 數(shù)據(jù)類型C數(shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型void定義類型typedef字符類型char枚舉類型enum整 型實(shí)型單精度型float雙精度型double數(shù)組結(jié)構(gòu)體struct共用體union短整型short長(zhǎng)整型long整型int3.3 基本數(shù)據(jù)類型基本數(shù)據(jù)類型包括整型、實(shí)型和字符型。3.3.1 整型int:整型。short:短整型。long:長(zhǎng)整型。unsigned int:無(wú)符號(hào)整型。unsigned short:無(wú)符號(hào)短整型。unsigned long:無(wú)符號(hào)長(zhǎng)整

6、型。各種整型的區(qū)別在于數(shù)的取值范圍不同。整型常量:寫(xiě)法含義實(shí)例普通寫(xiě)法int型125、-125加后綴l或Llong型125L、-125L加后綴u或U無(wú)符號(hào)型125U 是 unsigned int型125UL 是 unsigned long型加前綴0八進(jìn)制數(shù)0125的值相當(dāng)于十進(jìn)制數(shù)85加前綴0 x十六進(jìn)制數(shù) 0 x125的值相當(dāng)于十進(jìn)制數(shù)293整型變量:類型名 變量1,變量2,;int x,y,max;unsigned int i,j;long k;unsigned long m,n;以上變量都是整型變量,但它們?cè)试S存放的數(shù)值范圍不同。3.3.2 實(shí)型float:?jiǎn)尉葘?shí)型。double:雙精

7、度實(shí)型。float型提供7位有效數(shù)字,double型提供1516位有效數(shù)字。實(shí)型常量:1、普通寫(xiě)法:默認(rèn)為double型。如7.5、-1.228。2、加后綴f或F:?jiǎn)尉刃?。?.5f類型是float。3、科學(xué)計(jì)數(shù)法:尾數(shù) e或E 指數(shù)如:1.5e-3 表示 1.510-30.02E6 表示 0.02106注:指數(shù)必須為整數(shù)。實(shí)型不支持無(wú)符號(hào)型,也不支持八進(jìn)制和十六進(jìn)制寫(xiě)法。實(shí)型變量:類型名 變量1,變量2,;double x,y;float z;x=-11.26;y=7e3;z=5E-4;3.3.3 字符型char:字符型。unsigned char:無(wú)符號(hào)字符型。在計(jì)算機(jī)中,所有文字和符號(hào)

8、也都是由數(shù)字表示的。我們把表示文字的數(shù)值稱為編碼。C語(yǔ)言中,字符型的長(zhǎng)度為8位二進(jìn)制數(shù),最多只能表示256個(gè)字符。其中值為0127的數(shù)值表示的是ASCII碼表中的字符。字符常量:1、可打印字符:如 a、7、;。說(shuō)明:字符常量只能是單個(gè)字符,值為ASCII碼值,不能是漢字。2、轉(zhuǎn)義字符:包括不可打印字符和一些有特定功能的字符。t 制表符,相當(dāng)于Tab鍵形成的跳格。n 換行符,相當(dāng)于回車(chē)鍵。 單引號(hào)。 雙引號(hào)。 反斜杠。 0 空字符,它的值為0。說(shuō)明:一個(gè)轉(zhuǎn)義字符只相當(dāng)于一個(gè)字符。字符型變量:類型名 變量1,變量2,;char c1,c2;unsigned char x;c1=#;c2=7;x=n

9、;3.3.4 字符串字符串是由文字組成的文本串。C語(yǔ)言沒(méi)有提供字符串類型,但支持在程序中使用字符串。字符串中可包含英文、中文、日文等任意文字,它們的值取決于系統(tǒng)使用的編碼。通常英文字母和符號(hào)使用長(zhǎng)度為8位的ASCII碼,漢字使用長(zhǎng)度為16位的GBK或GB2312碼。字符串中可包含轉(zhuǎn)義字符。字符串常量:用雙引號(hào)引起的文本串。Hello World!你好,北京!蘋(píng)果t桔子t香蕉nC:Windows說(shuō)明:t、n、都是轉(zhuǎn)義字符,它們只相當(dāng)于一個(gè)字符。字符串變量:C語(yǔ)言用0結(jié)尾的字符數(shù)組作為字符串變量。char s15=a,b,c,d,0; /s的值為abcdchar s2=abcd;說(shuō)明:C語(yǔ)言在處理

10、字符串常量時(shí)會(huì)自動(dòng)在末尾加上0字符。練習(xí):1 和 1.0 有什么區(qū)別?1是int型,1.0是double型。1 和 1 有什么區(qū)別?1是int型,它的值是1。1是char型,它的值是49。1 和 1 有什么區(qū)別?1是char型,它是單個(gè)字符。1是字符串,它由1和0兩個(gè)字符組成。3.3.5 變量定義及初始化C語(yǔ)言規(guī)定:1、所有變量必須先定義再使用。2、變量在沒(méi)有設(shè)置值前,它的值是不確定的。3、變量的類型在程序執(zhí)行過(guò)程中不能發(fā)生改變。4、當(dāng)賦給變量的值超出了它的取值范圍,其值會(huì)被截?cái)?。變量定義:變量通常在函數(shù)開(kāi)始處定義,定義時(shí)可以設(shè)置初值(初始化),也可以不設(shè)置初值。int a,b=10,c=1;

11、char c1=K;double x=7.5,y;變量名必須是標(biāo)識(shí)符,同一個(gè)函數(shù)中變量不能重名。3.4 表達(dá)式和運(yùn)算符C語(yǔ)言提供了豐富的運(yùn)算符,可構(gòu)建多種形式的表達(dá)式。表達(dá)式由操作數(shù)和運(yùn)算符組成,每個(gè)表達(dá)式可產(chǎn)生一個(gè)確定的值。3.4.1 算數(shù)運(yùn)算1、算數(shù)運(yùn)算符:*乘整數(shù)或?qū)崝?shù)2*3 1.5*3.8/除整數(shù)或?qū)崝?shù)2/3 1.5/3.8%模整數(shù)6%2 6%4+加整數(shù)或?qū)崝?shù)75+88 13.6+5-減整數(shù)或?qū)崝?shù)13-6 7.1-2.3-取負(fù) 整數(shù)或?qū)崝?shù)-5 -8.3+增1整型變量x+ +x-減1整型變量x- -x說(shuō)明:1、整數(shù)的運(yùn)算結(jié)果還是整數(shù),實(shí)數(shù)的運(yùn)算結(jié)果是實(shí)數(shù),整數(shù)和實(shí)數(shù)的運(yùn)算結(jié)果是實(shí)數(shù)。運(yùn)算

12、結(jié)果2*5102*2.55.0 (不是5)5/22 (不是2.5)5/2.02.5注意:模運(yùn)算只能用于整數(shù),不能用于實(shí)數(shù)。2、優(yōu)先級(jí):*、/、%的優(yōu)先級(jí)高于+、-。運(yùn)算結(jié)果1+2*511(1+2)*5155%2*223、在表達(dá)式中,只能用圓括號(hào)改變運(yùn)算的優(yōu)先順序。如:算式:)()(2)3(510bayxbax寫(xiě)成C表達(dá)式:(10*x+5*(3*a+b)/(2*(x+y)*(a-b)注:C語(yǔ)言中運(yùn)算符不能省略,如10 x必須寫(xiě)成10*x。4、自加運(yùn)算和自減運(yùn)算:+:增1,對(duì)變量的值加1。-:減1,對(duì)變量的值減1。如:x+ 等價(jià)于 x=x+1x- 等價(jià)于 x=x-1說(shuō)明:(1) 自加和自減只能作用

13、于單個(gè)整型變量。如:(x+y)+ 是沒(méi)有意義的。(2) 自加和自減有前綴用法和后綴用法。int x=2;x+; /相當(dāng)于x = x+1int x=2;+x; /相當(dāng)于x = x+1單獨(dú)使用時(shí),前綴用法和后綴用法效果是相同的。(3) 前綴方式是“先增值后引用”,后綴方式是“先引用后增值”。int x=2, y;y = +x;x先增1,再賦值給y。所以x為3,y為3。int x=2, y;y = x+;先把x賦值給y,再對(duì)x增1。所以x為3,y為2。建議:盡量不要使用容易誤解的用法。int x=2, y;y = +x;int x=2, y;+x;y = x;int x=2, y;y = x+;in

14、t x=2, y;y = x;x+;推薦推薦int i=2, n;n = +i*2;int i=2, n;n = i+*2;+i是先增值,后引用。所以,運(yùn)算后:i值為3,n值為6。i+是先引用,后增值。所以,運(yùn)算后:i值為3,n值為4。(4) “+”和“-”運(yùn)算的優(yōu)先級(jí)高于乘法和除法。2、常用數(shù)學(xué)函數(shù):C語(yǔ)言的數(shù)學(xué)函數(shù)在頭文件math.h中聲明。絕對(duì)值函數(shù):int abs(int i) 求整數(shù)的絕對(duì)值double fabs(double x) 求實(shí)數(shù)的絕對(duì)值abs(-3)3fabs(-3)3.0fabs(-0.5*3)1.5平方根函數(shù):double sqrt(double x) 求平方根,x不

15、能為負(fù)sqrt(2)sqrt(a+b)2ba指數(shù)函數(shù)和對(duì)數(shù)函數(shù):double pow(double x, double y) 求x的y次方double exp(double x) 求e的x次方double log(double x) 求x的自然對(duì)數(shù)double log10(double x) 求x的以10為底的對(duì)數(shù)pow(3, 4)exp(3.5)log(10)log10(10)4310loge10ln10log1010lg5 . 3e三角函數(shù):double sin(double x) 求x正弦值double cos(double x) 求x的余弦值double tan(double x) 求

16、x的正切值以上函數(shù)中的x均為弧度。sin(30*3.14/180)cos(60*3.14/180)30sin()60cos(練習(xí)把下面的算式寫(xiě)成C表達(dá)式。(abs(a)+1)*(abs(b)+1) 11baaacbb242(-b+sqrt(b*b-4*a*c)/(2*a)例題寫(xiě)一個(gè)C程序,輸入圓的半徑,計(jì)算并輸出圓的周長(zhǎng)和面積。算法:輸入半徑r計(jì)算圓的周長(zhǎng)c=2r計(jì)算圓的面積s=r2輸出c和s。#include #define PI 3.1415926int main() double r,c,s; scanf(%f,&r); c=2*PI*r; s=PI*r*r; printf(周長(zhǎng)

17、為%fn,c); printf(面積為%fn,s); return 0;3.4.2 賦值運(yùn)算1、賦值運(yùn)算符:在C語(yǔ)言中,賦值是一種運(yùn)算,用于改變變量的值?!?”稱為賦值運(yùn)算符,它組成的表達(dá)式稱為賦值表達(dá)式。賦值表達(dá)式格式:變量名 = 表達(dá)式這個(gè)運(yùn)算的值是賦值后變量的值。實(shí)例1:int n; /*聲明了一個(gè)整型變量n*/n = 1; /*n賦值為1*/n = 1; 是一個(gè)表達(dá)式語(yǔ)句。實(shí)例2:int n = 1;n = 2.5;n是整型變量,賦值時(shí)會(huì)把小數(shù)截去,n的值為2。實(shí)例3:double x;x = 2.5;x的值是2.5。實(shí)例4:int a = 1, b = 2;a = a+b;a的值是3

18、。實(shí)例5:int a, b, c;a = b = c = 10;賦值是一種運(yùn)算,具有“自右向左”的結(jié)合性。先計(jì)算表達(dá)式 c = 10,c賦值為10,表達(dá)式值為10。再計(jì)算表達(dá)式 b = 表達(dá)式值,b賦值為10,表達(dá)式值為10。再計(jì)算表達(dá)式 a = 表達(dá)式值,a賦值為10,表達(dá)式值為10。執(zhí)行結(jié)果為a、b、c的值都是10。練習(xí):int a, b, c=1;a = 5;b = 2+(c=a);結(jié)果:a 的值是5;b 的值是7;c 的值是5。2、自反賦值運(yùn)算符:自反賦值是某些賦值的簡(jiǎn)化形式。*=乘賦值 x *= yx = x*y/=除賦值 x /= yx = x/y%=模賦值 x %= yx = x

19、%y+=加賦值 x += yx = x+y-=減賦值 x -= yx = x-y說(shuō)明:賦值運(yùn)算符(含自反賦值運(yùn)算符)的優(yōu)先級(jí)低于算術(shù)運(yùn)算符,所以應(yīng)先計(jì)算y+2,再進(jìn)行自反賦值運(yùn)算。int a=1, b=2;a += b; /* 相當(dāng)于a=a+b,執(zhí)行后a為3 */int x=2, y=3;x *= y+2; /* 相當(dāng)于x=x*(y+2),執(zhí)行后x為10 */說(shuō)明:賦值和自反賦值運(yùn)算符都是右結(jié)合的。計(jì)算過(guò)程為:a-=2*2; /a=a-2*2,值為-3,此時(shí)a值也變?yōu)?3a+=-3; /a=a+(-3),值為-6int a=1;a += a -= 2*2;3.4.3 關(guān)系運(yùn)算1、關(guān)系運(yùn)算符:大

20、于()大于等于()=小于()小于等于()3 的值為15=3 的值為02=b+c2、a%b=c3、acb4、a=a1000說(shuō)明:由于實(shí)數(shù)在運(yùn)算時(shí)存在有效數(shù)字的問(wèn)題,應(yīng)盡量避免對(duì)實(shí)數(shù)表達(dá)式做“相等”或“不等”的判斷。如:1.0/3*3=1.0在數(shù)學(xué)上兩邊是相等的,但在計(jì)算機(jī)中計(jì)算后兩邊的值不相等。3.4.4 邏輯運(yùn)算1、邏輯運(yùn)算符:邏輯與&邏輯或|邏輯非!當(dāng)一個(gè)判斷存在多個(gè)條件時(shí),需要用邏輯運(yùn)算對(duì)條件進(jìn)行組合。邏輯與:當(dāng)條件均為真時(shí),結(jié)果為真,有任一個(gè)條件為假,結(jié)果就是假。如:53 & 7=3 & 73 | 78 的值為158 的值為0F | F0(F)F | T1(T)T

21、 | F1(T)T | T1(T)F為假,T為真。邏輯非:真的非是假,假的非是真。如:!(53) 的值為0!(7=8) 的值為1!F1(T)!T0(F)F為假,T為真。命題1:x是1到100間的整數(shù)。x=1 & x=1 & x=100)x100或者命題3:x是小寫(xiě)英文字母。x=a & x=a & x=A & x、=、=關(guān)系雙目=、!=關(guān)系雙目&邏輯雙目|邏輯雙目=、+=、-=、*=、/=、%=賦值2、在進(jìn)行&運(yùn)算時(shí),當(dāng)左端的運(yùn)算結(jié)果為“假”時(shí),結(jié)果就是0,不再計(jì)算另一端。在進(jìn)行|運(yùn)算時(shí),當(dāng)左端的運(yùn)算結(jié)果為“真”時(shí),結(jié)果就是1,不再計(jì)算另一

22、端。如:int a=2, x;計(jì)算表達(dá)式:a0 & (x=3)表達(dá)式值為1,x=3執(zhí)行,x值為3。練習(xí):命題1:a小于b或a小于c。ab | ac & bc命題3:a和b其中之一小于c。ac | b0)命題5:a是奇數(shù)。a%2=1命題6:a不能被b整除。a%b!=03.4.5 逗號(hào)運(yùn)算符逗號(hào)表達(dá)式:表達(dá)式1,表達(dá)式2,表達(dá)式3這種用逗號(hào)連接起來(lái)的表達(dá)式稱為逗號(hào)表達(dá)式。從語(yǔ)法上,它相當(dāng)于一個(gè)表達(dá)式,它的值是最后一個(gè)表達(dá)式的值。如:1+2, 5*3 的值為15說(shuō)明:逗號(hào)運(yùn)算符的優(yōu)先級(jí)是最低的。如:x=1+2, 5*3 的效果是x值為3,逗號(hào)表達(dá)式的值為15x=(1+2,5*3) 的效果是x值為153.4.6 條件運(yùn)算符條件表達(dá)式:表達(dá)式1?表達(dá)式2:表達(dá)式3?:是條件運(yùn)算符,它是C語(yǔ)言中

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論