《c語言程序設(shè)計(jì)教學(xué)》第3章運(yùn)算符與表達(dá)式課件_第1頁
《c語言程序設(shè)計(jì)教學(xué)》第3章運(yùn)算符與表達(dá)式課件_第2頁
《c語言程序設(shè)計(jì)教學(xué)》第3章運(yùn)算符與表達(dá)式課件_第3頁
《c語言程序設(shè)計(jì)教學(xué)》第3章運(yùn)算符與表達(dá)式課件_第4頁
《c語言程序設(shè)計(jì)教學(xué)》第3章運(yùn)算符與表達(dá)式課件_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第三章運(yùn)算符和表達(dá)式第1頁,共52頁。常用運(yùn)算符和表達(dá)式運(yùn)算符的優(yōu)先級(jí)和結(jié)合性第三章運(yùn)算符和表達(dá)式 內(nèi)容提要:第2頁,共52頁。常用運(yùn)算符和表達(dá)式 運(yùn)算符按性質(zhì)分類: (1)算數(shù)運(yùn)算符: + - * / % (2)關(guān)系運(yùn)算符: = = = != (3)邏輯運(yùn)算符: ! & | (4)位運(yùn)算符: | & (5)賦值運(yùn)算符: = (6)條件運(yùn)算符: ? : (7)逗號(hào)運(yùn)算符:, (8)指針運(yùn)算符: * & (9)求字節(jié)數(shù)運(yùn)算符: sizeof (10)強(qiáng)制類型轉(zhuǎn)換運(yùn)算符: (類型名) (11)分量運(yùn)算符: - . (12)下標(biāo)運(yùn)算符: (13)其它數(shù)運(yùn)算符:函數(shù)調(diào)用運(yùn)算符()第3頁,共52頁。常用

2、運(yùn)算符和表達(dá)式運(yùn)算符按運(yùn)算所需對象(操作數(shù))的個(gè)數(shù)分類:(1)單目運(yùn)算符(僅對一個(gè)運(yùn)算對象進(jìn)行操作) + - ! -(2)雙目運(yùn)算符(需要兩個(gè)操作數(shù)) + - * / % 等(3)三目運(yùn)算符(需要三個(gè)操作數(shù)) ? : (唯一的一個(gè)三目運(yùn)算符) 第4頁,共52頁。表達(dá)式是運(yùn)算符、變量、常量和函數(shù)的任意組合構(gòu)成的式子。優(yōu)先級(jí)是指表達(dá)式中包含多個(gè)運(yùn)算符時(shí),先進(jìn)行優(yōu)先級(jí)高的運(yùn)算符操作,然后進(jìn)行運(yùn)算級(jí)低的運(yùn)算符操作。當(dāng)表達(dá)式中包含的幾個(gè)運(yùn)算符的優(yōu)先級(jí)完全相同時(shí),由運(yùn)算符的結(jié)合性來決定它們的運(yùn)算順序。結(jié)合性同一優(yōu)先級(jí),自左向右,為左結(jié)合性,反之為右結(jié)合性。 運(yùn)算符的兩側(cè)數(shù)據(jù)類型不同,需要數(shù)據(jù)類型轉(zhuǎn)換。常用

3、運(yùn)算符和表達(dá)式 有些運(yùn)算符的結(jié)合方向?yàn)樽杂蚁蜃?,如賦值運(yùn)算符。第5頁,共52頁。算數(shù)運(yùn)算符和算數(shù)表達(dá)式基本的算術(shù)運(yùn)算符: (加法運(yùn)算符。如:35、) (減法運(yùn)算符,或負(fù)值運(yùn)算符。如:52、3)* (乘法運(yùn)算符。如:3*5) (除法運(yùn)算符。如:53, 5.03 ) (模運(yùn)算符,或稱求余運(yùn)算符,兩側(cè)均應(yīng)為整型數(shù)據(jù),如:74的值為3)。第6頁,共52頁。算數(shù)運(yùn)算符和算數(shù)表達(dá)式例:12/5=2 12.0/5=2.4整型+(-、*、/)整型=整型實(shí)型+(-、*、/)實(shí)型=實(shí)型若一個(gè)操作數(shù)為整型,另一個(gè)操作數(shù)為實(shí)型,結(jié)果是實(shí)型第7頁,共52頁。算數(shù)運(yùn)算符和表達(dá)式例:1/2= -5/2= -5/2.0=例:

4、5%2= -5%2= 5/-2= 1%10= 5%1= 5.5%2=0 -2-2.51-111 0第8頁,共52頁。類型轉(zhuǎn)換 同種數(shù)據(jù)類型的運(yùn)算結(jié)果,還是該類型 不同數(shù)據(jù)類型的運(yùn)算結(jié)果,是兩種類型中取值范圍更大的那種例:計(jì)算2L+3*4.5如果自動(dòng)轉(zhuǎn)換不符合需要,可以要求做特定類型轉(zhuǎn)換。 (類型)表達(dá)式例:(int)(3.6*15.8)+42.032L3.0C4.513.515.5第9頁,共52頁。例:#include main() int m=5; printf(“m/2=%dn”, m/2); printf(“(float)(m/2)=%fn”, (float)(m/2); printf

5、(“(float)m/2=%fn”, (float)m/2); 運(yùn)行結(jié)果:m/2=2 (float)(m/2)=2.000000 (float)m/2=2.500000類型轉(zhuǎn)換第10頁,共52頁。算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級(jí)與結(jié)合性用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對象(也稱操作數(shù))連接起來的、符合語法規(guī)則的式子,稱為算術(shù)表達(dá)式。運(yùn)算符類型含義優(yōu)先級(jí)結(jié)合性-單目取負(fù)值1從右向左*雙目乘法運(yùn)算2從左向右/雙目除法運(yùn)算從左向右%雙目求余運(yùn)算從左向右-雙目減法運(yùn)算3從左向右+雙目加法運(yùn)算從左向右例: (-16/3*2+1)%6=-3第11頁,共52頁。算數(shù)運(yùn)算符和表達(dá)式函數(shù)名功能函數(shù)名功能sqrt(x)x平方根

6、,x大于等于0exp(x)ex的值fabs(x)x的絕對值pow(x,y)xy的值log(x)lnx的值sin(x)sinx的值,x為弧度值log10(x)lgx的值cos(x)cosx的值,x為弧度值使用標(biāo)準(zhǔn)數(shù)學(xué)函數(shù)時(shí),程序開頭必須加上編譯預(yù)處理命令。#include第12頁,共52頁。例:給出三角形的三邊長,求三角形面積。解題思路:假設(shè)給定的三個(gè)邊符合構(gòu)成三角形的條件關(guān)鍵是找到求三角形面積的公式公式為: 其中s=(a+b+c)/2第13頁,共52頁。#include #include /調(diào)用數(shù)學(xué)函數(shù)加此行int main ( ) double a,b,c,s,area; a=3.67; b

7、=5.43; c=6.21; s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); / 函數(shù) printf(a=%ftb=%ft%fn,a,b,c); printf(area=%fn,area); return 0; 第14頁,共52頁。實(shí)驗(yàn)P43 面積: 體積:第15頁,共52頁。#include #include #define PI 3.14159main () double r, surf, volu; printf(“Input r:”); scanf (“%lf”, &r) ; surf=4*PI*pow(r,2); volu=4.0/3.0*PI

8、*pow(r,3); printf(“surf=%lfn, surf); printf(“volu=%lfn, volu); 運(yùn)行結(jié)果:Input r:.5.0surf=314.159000Volu=523.598333 第16頁,共52頁。#include #define PI 3.14159main () double r, surf, volu; printf(“Input r:”); scanf (“%lf”, &r) ; surf=4*PI*r*r; volu=4.0/3.0*PI*r*r*r; printf(“surf=%lfn, surf); printf(“volu=%lfn,

9、 volu); 第17頁,共52頁。算數(shù)運(yùn)算符和表達(dá)式常見錯(cuò)誤:(1)將*省略,或者寫成。(2)使用或者限定表達(dá)式的運(yùn)算順序。只能用()(3)使用數(shù)學(xué)函數(shù)運(yùn)算時(shí),未將參數(shù)()括起來,且未注意其定義域要求參數(shù)的單位。(如:三角函數(shù)參數(shù)的單位是弧度,不是角度,開平方函數(shù)的參數(shù)不能小于0等)說明:(1)兩個(gè)整數(shù)相除的結(jié)果仍為整數(shù),舍去小數(shù)部分的值。(2)求余運(yùn)算先定參與運(yùn)算的兩個(gè)操作數(shù)為整數(shù)。(3)運(yùn)算符的兩側(cè)數(shù)據(jù)類型不同,先自動(dòng)進(jìn)行類型轉(zhuǎn)換,使二 者具有同一種類型,然后進(jìn)行運(yùn)算。第18頁,共52頁。賦值運(yùn)算符與表達(dá)式賦值運(yùn)算符含義是將一個(gè)數(shù)據(jù)賦給一個(gè)變量三種賦值形式:(1)簡單賦值變量名=表達(dá)式

10、a=c+d賦值表達(dá)式左邊必須是變量,而不能是常量或者表達(dá)式,右邊是合法的C語言表達(dá)式。 例:i+3=i a*b=c*8 5=x 錯(cuò)誤第19頁,共52頁。賦值表達(dá)式中的“表達(dá)式”,又可以是一個(gè)賦值表達(dá)式(2)多重賦值變量1=變量2=變量n=表達(dá)式等價(jià)于:變量1=(變量2=(=(變量n=表達(dá)式)a=b=7+1第20頁,共52頁。賦值運(yùn)算符與表達(dá)式(3)復(fù)合賦值變量 復(fù)合賦值符表達(dá)式等價(jià)于:變量=變量 賦值符 表達(dá)式 在賦值符 “=”前加上某些運(yùn)算符,可以構(gòu)成復(fù)合賦值運(yùn)算符,復(fù)合賦值運(yùn)算符可以構(gòu)成賦值表達(dá)式 C語言規(guī)定可以使用10種復(fù)合賦值運(yùn)算符+=、-=、*=、/=、%/、 =、|=、 =、&=

11、第21頁,共52頁。賦值運(yùn)算符與表達(dá)式運(yùn)算符例子等價(jià)形式+=a+=ba=a+b-=a-=ba=a-b*=a*=ba=a*b/=a/=ba=a/b%=a%=ba=a%b第22頁,共52頁。賦值運(yùn)算符與表達(dá)式例:已知變量a=3,求分別執(zhí)行下列語句后, 變量a的值分別是多少 a+=a-=a*a; a+=a-=a*=a;常見錯(cuò)誤:沒有將復(fù)合賦值運(yùn)算符右側(cè)的表達(dá)式作為一個(gè)整體參與運(yùn)算例:n*=m+1n=n*m+1 (錯(cuò))n=n*(m+1) (對)第23頁,共52頁。增1和減1運(yùn)算符說明: 自增、自減運(yùn)算符+ - 作用:使變量值加1或減1 種類: 前置 +i, -i (在使用i之前,先使i的值加(減)1)

12、 后置 i+,i- (先使用i值,再使i的值加(減)1 )增1和減1結(jié)合方向:自右向左增1和減1都是單目運(yùn)算符,只需一個(gè)操作數(shù),操作數(shù)只能是變量,不能是常量和表達(dá)式。如:5+,(a+b)+第24頁,共52頁。增1和減1運(yùn)算符運(yùn)算符等價(jià)形式+xx=x+1x+x=x+1-xx=x-1x-x=x-1語句等價(jià)語句m=n+m=n;n=n+1;m=n-m=n;n=n-1;m=+nn=n+1;m=n;m=-nn=n-1;m=n; +或-作為前綴或后綴運(yùn)算符使用時(shí),對變量而言,結(jié)果是一樣的,但對于表達(dá)式而言,結(jié)果不一樣。第25頁,共52頁。設(shè)a=5(1)b=+a (2)b=a-(3)b=-a(4)b=a+a=

13、6, b=6a=4, b=5a=4, b=4a=6, b=5第26頁,共52頁。例 j=3; k=+j; j=3; k=j+; a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+)*b; /k=4,j=4/k=3,j=4/c=20,a=4/c=15,a=4例:若n=3,則執(zhí)行完m=-n+后,m, n分別是多少m=-(n+)m=-nn=n+1m=-3n=4例:j=+i-2等價(jià)于:i=i+1; j=i-2; j=i+-2等價(jià)于: j=i-2; i=i+1;增1和減1運(yùn)算符第27頁,共52頁。逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式 逗號(hào)運(yùn)算符:, 作用:連接兩個(gè)表達(dá)式 優(yōu)先級(jí):所有運(yùn)算符中優(yōu)先級(jí)最低 結(jié)

14、合方向:從左向右 形式:表達(dá)式1,表達(dá)式2,表達(dá)式n逗號(hào)表達(dá)式的值:等于表達(dá)式n的值求解過程:先求表達(dá)式1,再求表達(dá)式2,依次求下去,直到求出表達(dá)式n,整個(gè)逗號(hào)表達(dá)式的值就是表達(dá)式n的值第28頁,共52頁。例 a=3*5,a*4 a=3*5,a*4,a+5例 x=(a=3,6*3)/a=15,表達(dá)式值60/a=15,表達(dá)式值20/賦值表達(dá)式,表達(dá)式值18,x=18注意:并不是任何地方出現(xiàn)的逗號(hào),都是逗號(hào)運(yùn)算符。很多情況下,逗號(hào)僅用作分隔符。逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式第29頁,共52頁。關(guān)系運(yùn)算符與表達(dá)式運(yùn)算符類型含義優(yōu)先級(jí)結(jié)合性雙目大于從左向右=雙目大于等于從左向右=雙目等于2從左向右!=雙目不等

15、于從左向右關(guān)系運(yùn)算:比較運(yùn)算,比較兩個(gè)操作數(shù),看是否滿足給定的關(guān)系。用于簡單的條件判斷。第30頁,共52頁。關(guān)系運(yùn)算符與表達(dá)式例:(1)3.243-1等價(jià)于:a=(1+2)(3-1)第31頁,共52頁。關(guān)系運(yùn)算符與表達(dá)式例: 0 0 2=32=3=5 z=3+1=2+3-1=5+6*2等價(jià)于z=(3+1)=(2+3-1)=(5+6*2)z=4=4 = (無空格) = = (關(guān)系運(yùn)算和賦值運(yùn)算混淆,兩者含義不同)(3)誤以為語法上合法的關(guān)系表達(dá)式在邏輯上一定是正確的。 例:若a=3,b=2,c=1,則abc。ab11c0第33頁,共52頁。邏輯運(yùn)算符與表達(dá)式運(yùn)算符類型含義優(yōu)先級(jí)結(jié)合性!單目邏輯非

16、1從左向右&雙目邏輯與2從左向右|雙目邏輯或3從左向右邏輯運(yùn)算也成布爾運(yùn)算,用于復(fù)雜的條件判斷A取值B取值!AA&BA|B非0非0011非000010非010100100邏輯運(yùn)算真值表(表征邏輯事件輸入和輸出之間全部可能狀態(tài)的表格)(1)&兩個(gè)操作數(shù)都為真時(shí),結(jié)果為真。(2)|只要有一個(gè)操作數(shù)為真,結(jié)果為真。例如:若a=3,b=2,c=1,則abc (ab)&(bc)第34頁,共52頁。邏輯運(yùn)算符與表達(dá)式在邏輯表達(dá)式的求解中,并不是所有的邏輯運(yùn)算符都要被執(zhí)行。 & :若第一個(gè)操作數(shù)為0時(shí),則第二個(gè)操作數(shù)不在計(jì)算。 |:若第一個(gè)操作數(shù)為非0,則第二個(gè)操作數(shù)不在計(jì)算。例:a=0; b=1; c=2

17、; d=a+&b+&- -c; 運(yùn)算結(jié)果: d=0,a=1,b=1,c=2d=(a+)&(b+)&(- -c);例:a=0; b=1; c=2; d=a+|b+|- -c; 運(yùn)算結(jié)果: d=1,a=1,b=2,c=2 d=(a+)|(b+)|(- -c); 第35頁,共52頁。條件運(yùn)算符與條件表達(dá)式有兩個(gè)符號(hào):?:,它與三個(gè)操作數(shù)組成三元運(yùn)算。一般形式: ? :求值規(guī)則和表達(dá)式的值:求解表達(dá)式1真(非0)求解表達(dá)式2假(0)求解表達(dá)式3表達(dá)式的值例 :int max,a=5;b=3;max=ab?a:b 優(yōu)先級(jí):邏輯 條件 賦值結(jié)果:max=5, a=5,b=3第36頁,共52頁。位運(yùn)算符與表

18、達(dá)式運(yùn)算符類型含義優(yōu)先級(jí)結(jié)合性單目按位取反1從右向左雙目左移位,右移位2從左向右&雙目按位與3從左向右雙目按位異或4從左向右|雙目按位或5從左向右位運(yùn)算真值表A取值B取值A(chǔ)&BA|BABA000001010111100110111100左移位xn,把x的每一位向右移n位,左邊空位補(bǔ)零。從一端移走的不移入另一端,移出的位信息丟失運(yùn)算量只能是整型或字符型的數(shù)據(jù),不能為實(shí)型數(shù)據(jù)。第37頁,共52頁。位運(yùn)算符與表達(dá)式“按位與”運(yùn)算符() 參加運(yùn)算的兩個(gè)數(shù)據(jù),按二進(jìn)制位進(jìn)行“與”運(yùn)算。如果兩個(gè)相應(yīng)的二進(jìn)制位都為1,則該位的結(jié)果值為1;否則為0。即: 000,010,100,111例:35并不等于8,應(yīng)該

19、是按位與運(yùn)算: 00000011(3)& 00000101(5) 00000001(1) 注意:如果參加&運(yùn)算的是負(fù)數(shù)(如-3&-5),則要以補(bǔ)碼形式表示為二進(jìn)制數(shù),然后再按位進(jìn)行“與”運(yùn)算。第38頁,共52頁。按位與的用途: 清零若想對一個(gè)存儲(chǔ)單元清零,即使其全部二進(jìn)制位為0,只要找一個(gè)二進(jìn)制數(shù),其中各個(gè)位符合以下條件:原來的數(shù)中為的位,新數(shù)中相應(yīng)位為0。然后使二者進(jìn)行運(yùn)算,即可達(dá)到清零目的。 取一個(gè)數(shù)中某些指定位 如有一個(gè)整數(shù)(2個(gè)字節(jié)),想要取其中的低字節(jié),只需將與8個(gè)1按位與即可。 0 0 1 0 1 1 0 0 1 0 1 0 1 1 0 0abc0 0 0 0 0 0 0 0 1

20、1 1 1 1 1 1 10 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0第39頁,共52頁?!鞍次换颉边\(yùn)算符(|)兩個(gè)相應(yīng)的二進(jìn)制位中只要有一個(gè)為1,該位的結(jié)果值為1。即: 0|00,0|11,1|01,1|11例: 060|017,將八進(jìn)制數(shù)60與八進(jìn)制數(shù)17進(jìn)行按位或運(yùn)算。 00110000| 00001111 00111111 應(yīng)用:按位或運(yùn)算常用來對一個(gè)數(shù)據(jù)的某些位定值為。例如:如果想使一個(gè)數(shù)的低4位改為1,只需將與017進(jìn)行按位或運(yùn)算即可。第40頁,共52頁?!爱惢颉边\(yùn)算符()異或運(yùn)算符也稱XOR運(yùn)算符。它的規(guī)則是:若參加運(yùn)算的兩個(gè)二進(jìn)制位同號(hào)則結(jié)果為0(假) 異號(hào)則

21、結(jié)果為1(真)即: 00=0,01=1,10=1, 11=0即: 071052=023 (八進(jìn)制數(shù)) 00111001 00101010 00010011 例:第41頁,共52頁。運(yùn)算符應(yīng)用:使特定位翻轉(zhuǎn)設(shè)有01111010,想使其低4位翻轉(zhuǎn),即1變?yōu)?,0變?yōu)???梢詫⑺c00001111行運(yùn)算,即: 01111010 00001111 01110101運(yùn)算結(jié)果的低4位正好是原數(shù)低4位的翻轉(zhuǎn)??梢姡鼓膸孜环D(zhuǎn)就將與其進(jìn)行運(yùn)算的該幾位置為1即可。第42頁,共52頁。與0相,保留原值因?yàn)樵瓟?shù)中的與0進(jìn)行運(yùn)算得,00得0,故保留原數(shù)。例如:01200=012 00001010 00000000

22、 00001010第43頁,共52頁。交換兩個(gè)值例如:3,4。想將和的值互換,可以用以下賦值語句實(shí)現(xiàn):ab;ba;ab; 011()100 111(ab的結(jié)果,a已變成7)() 100 011(ba的結(jié)果,b已變成3)() 111 100(ab的結(jié)果,a已變成4)第44頁,共52頁?!叭》础边\(yùn)算符()是一個(gè)單目(元)運(yùn)算符,用來對一個(gè)二進(jìn)制數(shù)按位取反,即將0變1,將1變0。例如,025是對八進(jìn)制數(shù)25(即二進(jìn)制數(shù)00010101)按位求反。11101010作用:加密處理初始字節(jié): 00000101一次求反后: 11111010二次求反后: 00000101第45頁,共52頁。左移運(yùn)算符()左移運(yùn)算符是用來將一個(gè)數(shù)的各二進(jìn)制位全部左移若干位。其右邊空出的位用0填補(bǔ),高位左移溢出則舍棄該高位。例如:a=)右移運(yùn)算符是a2表示將a的各二進(jìn)制位右移2位0。例:a2 a=017時(shí),a的值用二進(jìn)制形式表示為00001111,舍棄低2位11: a2=00000011右移一位相當(dāng)于除以2 右移n位相當(dāng)于除以2n。 第47頁,共52頁。在右移時(shí),需要注意符號(hào)位問題: 對無符號(hào)數(shù),右移時(shí)左邊高位移入0; 對于有符號(hào)的值, - 如果原來符號(hào)位為0(該數(shù)為正),則左邊也是移入0。 - 如果符號(hào)位原來為1(即負(fù)數(shù)),則左邊移入0還是1,要取決于所用的計(jì)算機(jī)系統(tǒng)。有的系統(tǒng)移入

溫馨提示

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

評論

0/150

提交評論