程序設(shè)計(jì)基礎(chǔ)ch2課件_第1頁
程序設(shè)計(jì)基礎(chǔ)ch2課件_第2頁
程序設(shè)計(jì)基礎(chǔ)ch2課件_第3頁
程序設(shè)計(jì)基礎(chǔ)ch2課件_第4頁
程序設(shè)計(jì)基礎(chǔ)ch2課件_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第2章 運(yùn)算符與表達(dá)式學(xué)習(xí)目標(biāo) 學(xué)會(huì)使用基本運(yùn)算符 理解運(yùn)算符的優(yōu)先級(jí)和結(jié)合性規(guī)則 學(xué)會(huì)使用加一、減一運(yùn)算符 學(xué)會(huì)使用賦值運(yùn)算符 學(xué)會(huì)使用條件表達(dá)式 學(xué)會(huì)使用位運(yùn)算符 理解類型轉(zhuǎn)換7/28/20221程序設(shè)計(jì)基礎(chǔ) 張杰敏2.1 程序設(shè)計(jì)的數(shù)據(jù) 迄今為止,所有馮諾依曼結(jié)構(gòu)的計(jì)算機(jī)都由以下5個(gè)部分組成: 輸入設(shè)備 負(fù)責(zé)把用戶的程序和數(shù)據(jù)輸入到計(jì)算機(jī)的存儲(chǔ)器中。 輸出設(shè)備 負(fù)責(zé)從計(jì)算機(jī)中取出程序執(zhí)行結(jié)果或其他信息,供用戶查看。 存儲(chǔ)器 是實(shí)現(xiàn)記憶功能的部件,負(fù)責(zé)存儲(chǔ)程序和數(shù)據(jù)。 運(yùn)算器 負(fù)責(zé)數(shù)據(jù)的算術(shù)運(yùn)算和邏輯運(yùn)算,即數(shù)據(jù)的加工處理。 控制器 負(fù)責(zé)對(duì)程序規(guī)定的控制信息進(jìn)行分析、控制并協(xié)調(diào)輸入、輸出操

2、作或內(nèi)存訪問。7/28/20222程序設(shè)計(jì)基礎(chǔ) 張杰敏2.1 程序設(shè)計(jì)的數(shù)據(jù)類型 數(shù)據(jù)特征的抽象地址、值 數(shù)據(jù)的存儲(chǔ)運(yùn)算符、表達(dá)式、函數(shù) 數(shù)據(jù)的加工生存期、作用域 數(shù)據(jù)的存在賦值、輸入/輸出 數(shù)據(jù)的傳輸7/28/20223程序設(shè)計(jì)基礎(chǔ) 張杰敏2.2 基本運(yùn)算符二元算術(shù)運(yùn)算符包括加、減、乘、除、取模運(yùn)算5種,分別用符號(hào)+、-、*、/、%表示由算術(shù)運(yùn)算符連結(jié)的表達(dá)式稱為算術(shù)表達(dá)式 關(guān)系運(yùn)算用來比較大小、確定運(yùn)算分量的大小關(guān)系。C語言的關(guān)系運(yùn)算符包括: = = = = !=關(guān)系運(yùn)算符連結(jié)的表達(dá)式稱為關(guān)系表達(dá)式。關(guān)系表達(dá)式只有一個(gè)邏輯值,即“真” 或“假”。邏輯運(yùn)算符包括邏輯與、邏輯或和邏輯非,分別用

3、符號(hào)&、| 和 !表示。 其中&和| 是二元的,!是一元的。邏輯運(yùn)算符連結(jié)的表達(dá)式稱為邏輯表達(dá)式。邏輯表達(dá)式也只有一個(gè)邏輯值,即“真”或“假” C語言沒有邏輯型數(shù)據(jù),定義以int型值1代表“真”, int型值0代表“假” 7/28/20224程序設(shè)計(jì)基礎(chǔ) 張杰敏2.3 類型轉(zhuǎn)換當(dāng)表達(dá)式中出現(xiàn)多種不同類型的數(shù)據(jù)時(shí),C語言將依據(jù)一定規(guī)則把它們轉(zhuǎn)換成某個(gè)共同的類型,然后進(jìn)行計(jì)算-隱式轉(zhuǎn)換 簡單的規(guī)則:在各類型間實(shí)行由低向高的轉(zhuǎn)換。下式箭頭方向表示數(shù)據(jù)類型間由低到高的排列順序: long double double float unsigned long long unsigned int int (

4、類型名)(表達(dá)式) 表達(dá)式被轉(zhuǎn)換成由類型名所指明的類型 -強(qiáng)制類型轉(zhuǎn)換 強(qiáng)制類型轉(zhuǎn)換還是自動(dòng)轉(zhuǎn)換,需要轉(zhuǎn)換的變量事實(shí)上將產(chǎn)生一個(gè)符合轉(zhuǎn)換要求的中間變量參與計(jì)算,變量本身的類型和值不發(fā)生變化 7/28/20225程序設(shè)計(jì)基礎(chǔ) 張杰敏【例2-1】數(shù)值非0取邏輯值1,數(shù)值為0取邏輯值0。 #include void main() int i = 1; float f = 1.5f; if (f&i ) printf(f = %fti = %dt,f,i); printf(nBoth f and i are turen); i = 0; if(!i) printf(ni = %d,i); printf

5、(ni is falsen); 7/28/20226程序設(shè)計(jì)基礎(chǔ) 張杰敏運(yùn)行結(jié)果:7/28/20227程序設(shè)計(jì)基礎(chǔ) 張杰敏【例2-2】計(jì)算圓周長和面積,運(yùn)算結(jié)果為float型。 #include #define PI 3.1415 void main() float r,size,area; printf(r = ); scanf(%f,&r); size = 2*r*PI; area = r*r*PI; printf(size = %fn,size); printf(area = %fn,area); 7/28/20228程序設(shè)計(jì)基礎(chǔ) 張杰敏運(yùn)行結(jié)果:7/28/20229程序設(shè)計(jì)基礎(chǔ) 張杰敏

6、【例2-3】計(jì)算圓周長和面積,運(yùn)算結(jié)果為int型。 #include #define PI 3.1415 void main() double r; int size,area; printf(r = ); scanf(%lf,&r); size = 2*r*PI; area = r*r*PI; printf(size = %dn,size); printf(area = %dn,area); 7/28/202210程序設(shè)計(jì)基礎(chǔ) 張杰敏運(yùn)行結(jié)果:7/28/202211程序設(shè)計(jì)基礎(chǔ) 張杰敏2.4 加1與減1運(yùn)算符兩個(gè)特殊的運(yùn)算符+和- ,+運(yùn)算符使運(yùn)算分量加 1,-運(yùn)算符使運(yùn)算分量減 +與-既可

7、以作前綴運(yùn)算符,也可作后綴運(yùn)算符,只用在變量前面或后面作前綴運(yùn)算符與作后綴運(yùn)算符,其結(jié)果其效果是不同的。+i在i的值被使用之前先使i加1;i+則是在i的值被使用之后再使 i加1 ,-i在i的值被使用之前先使i減1;i-則是在i的值被使用之后再使 i減1 7/28/202212程序設(shè)計(jì)基礎(chǔ) 張杰敏2.5 賦值運(yùn)算符與賦值表達(dá)式使用賦值語句可以改變變量的值一般語法形式為:變量 = 表達(dá)式;賦值表達(dá)式結(jié)尾加“;”,使其成為賦值語句 “=”稱為賦值運(yùn)算符,代表賦值操作,將賦值運(yùn)算符右邊表達(dá)式的值賦給左邊的變量如果賦值運(yùn)算符兩端的類型不一致,則會(huì)發(fā)生類型轉(zhuǎn)換 賦值運(yùn)算符的結(jié)合規(guī)則為自右向左,其優(yōu)先級(jí)只高

8、于逗號(hào)運(yùn)算符,而低于其它運(yùn)算符 值運(yùn)算符可與其它的運(yùn)算符一起構(gòu)成復(fù)合賦值運(yùn)算符,C語言的復(fù)合賦值運(yùn)算符有以下10種,其中后5種有關(guān)位運(yùn)算:+=、-=、*=、/=、%=、=、&=、=、|=將在2.7中介紹7/28/202213程序設(shè)計(jì)基礎(chǔ) 張杰敏2.4 賦值運(yùn)算符與賦值表達(dá)式表2.2 賦值表達(dá)式的計(jì)算過程聲明和初始化int i=1, j=2, k=3, m=4表達(dá)式等價(jià)表達(dá)式等價(jià)表達(dá)式等價(jià)表達(dá)式值i+=j+ki+=(j+k)i=( i+( j+k)6 j*=k=m+5j*= k=(m+5)j*=( k=( m+5)j=(j* ( k=( m+5) )18i+=i-=i+2i+=i=(i-( i+

9、2)i+=(i=(i-( i+2)i=(i+(i=(i-( i+2)-4注意:在表達(dá)式i+=i-=i+2中,變量i被賦值過2次。7/28/202214程序設(shè)計(jì)基礎(chǔ) 張杰敏2.6 條件運(yùn)算符和逗號(hào)運(yùn)算符條件表達(dá)式的一般語法形式是: 表達(dá)式1?表達(dá)式2:表達(dá)式3首先計(jì)算表達(dá)式1 ,如果其值不等于0(即為真),則計(jì)算表達(dá)式2 的值,此時(shí)條件表達(dá)式的值等于表達(dá)式2的值;否則計(jì)算表達(dá)式3的值,并以該值作為條件表達(dá)式的值。在表達(dá)式2 與表達(dá)式 3中,只有一個(gè)會(huì)被計(jì)算到。條件運(yùn)算符?:遵從自右向左的結(jié)合規(guī)則,其優(yōu)先級(jí)高于賦值運(yùn)算符而低于關(guān)系運(yùn)算符 如:條件表達(dá)式:y z ? y : z 的值 ,當(dāng)yz時(shí),為

10、y,否則為z。7/28/202215程序設(shè)計(jì)基礎(chǔ) 張杰敏【例2-5】求a,b,c中最大的數(shù)。#include void main()int a,b,c;int max;scanf(a=%d,b=%d,c=%d,&a,&b,&c);max = (ab?a:b);max = (maxc?max:c);printf(max=%dn,max); 7/28/202216程序設(shè)計(jì)基礎(chǔ) 張杰敏運(yùn)行結(jié)果:7/28/202217程序設(shè)計(jì)基礎(chǔ) 張杰敏2.7 位運(yùn)算符位運(yùn)算是指對(duì)運(yùn)算分量按二進(jìn)制位進(jìn)行的運(yùn)算 C語言提供了六個(gè)用于位操作的運(yùn)算符: & 按位與(AND) | 按位或(OR) 按位異或(XOR) 右移 求

11、反碼(一元運(yùn)算符)這些運(yùn)算符只能作用于整數(shù)型分量,包括unsigned或signed的char、short、int與long型,不能作用于浮點(diǎn)型分量 優(yōu)先級(jí)7/28/202218程序設(shè)計(jì)基礎(chǔ) 張杰敏2.7 位運(yùn)算符-規(guī)則aba&ba|baba001101010001011110011100 (右移)的運(yùn)算規(guī)則是:將運(yùn)算分量的每個(gè)二進(jìn)制位向右移動(dòng)若干位,從右邊移出去的低位部分被丟棄 當(dāng)右移無符號(hào)分量時(shí),左邊空出的高位部分用 0填充;當(dāng)右移有符號(hào)的分量時(shí),填充位與具體的機(jī)器有關(guān) ,用符號(hào)位填充,稱為 “算術(shù)移位”或用 0填充,稱為 “邏輯移位” 7/28/202219程序設(shè)計(jì)基礎(chǔ) 張杰敏2.8 運(yùn)

12、算符優(yōu)先級(jí)所有運(yùn)算符的優(yōu)先級(jí)和結(jié)合性規(guī)則,包括尚未討論過的一些運(yùn)算符及其規(guī)則 ,用圖表說明一元運(yùn)算符較二元運(yùn)算符有較高的優(yōu)先級(jí)別 ,特別是+和-,既能是一元運(yùn)算符,也可以是二元運(yùn)算符要注意它的用法7/28/202220程序設(shè)計(jì)基礎(chǔ) 張杰敏2.8 運(yùn)算符優(yōu)先級(jí)運(yùn) 算 符結(jié)合性() - .自左向右 ! + - +(一元) -(一元) * & (類型) sizeof自右向左 * / %自左向右+ - 自左向右自左向右 = 自左向右= != 自左向右&自左向右自左向右|自左向右&自左向右|自左向右?:自右向左= += -= *= /= &= = |= = 自右向左,自左向右7/28/202221程序設(shè)計(jì)基礎(chǔ) 張杰敏2.9 編程指導(dǎo) 在二元運(yùn)算符的兩邊各放一個(gè)空格字符,可使運(yùn)算組合更清楚,提高程序的可讀性 對(duì)于復(fù)雜的算術(shù)表達(dá)式使用括號(hào),有時(shí)盡管不必要,但能夠使這個(gè)表達(dá)式更

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論