VC6-05-0-運算符與表達式_第1頁
VC6-05-0-運算符與表達式_第2頁
VC6-05-0-運算符與表達式_第3頁
VC6-05-0-運算符與表達式_第4頁
VC6-05-0-運算符與表達式_第5頁
已閱讀5頁,還剩37頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章運算符與表達式信息技術(shù)組孫穎北師大附屬杭州中學(xué)前言了解程序中使用的數(shù)據(jù)類型后,還要懂得如何操作這些數(shù)據(jù),所以掌握C語言中各種運算符及其表達式的應(yīng)用是必不可少的。

C語言的主要特點就是擁有豐富的運算符和表達式。本章內(nèi)容是:表達式的概念,運算符及相關(guān)表達式的使用。其中包括賦值運算符、算數(shù)運算符、關(guān)系運算符、邏輯運算符、位邏輯運算符、逗號運算符、條件運算符及復(fù)合賦值運算符。目錄1.表達式2.賦值運算符與賦值表達式3.算術(shù)運算符與表達式4.關(guān)系運算符與表達式5.邏輯運算符與表達式6.位邏輯運算符與表達式7.逗號運算符與表達式8.條件運算符與表達式9.復(fù)合賦值運算符10.小結(jié)實戰(zhàn)5.1 表達式表達式是C語句的主體。在C語言中,運算符、變量和函數(shù)一起組成表達式,表示各種運算功能。根據(jù)表達式內(nèi)含有操作符的個數(shù),我們把表達式分為:簡單表達式——只含有一個操作符復(fù)雜表達式——含有兩個或兩個以上操作符關(guān)于表達式關(guān)于逗號逗號既可以當(dāng)作分隔符,又可以用在表達式中關(guān)于逗號1.2.3.4.用于間隔說明語句中的變量或函數(shù)中的參數(shù)。逗號是分隔符將若干獨立的表達式連接在一起。逗號在表達式中使用逗號分隔變量:inta,b;使用逗號分隔參數(shù):Printf(“abc%d”,c);分隔符范例for(i=0,j=100;i<j;i++,j--){k=i+j;}表達式范例小測試試一試你的力有4個int變量,則a=(b=1,c=2,d=3)計算后,a的值是A.1B.2C.3D.6若有代數(shù)式,則不正確的C語言表達式是a/b/c*e*3 B.3*a*e/b/cC.3*a*e/b*c D.a*e/c/b*312“=”就是賦值運算符。它的功能是為變量賦值。如i=20;就是把常量20這個值賦給i這個變量。當(dāng)然,我們也可以把一個表達式賦值給某變量,這在我們以前的課里早已經(jīng)實踐過了。關(guān)于賦值運算符5.2 賦值運算符與賦值表達式5.2 賦值運算符與賦值表達式自動類型轉(zhuǎn)換將實型數(shù)據(jù)賦值給整型變量,小數(shù)部分將被舍棄inta;a=1.23456;printf(“%d”,a);將整型數(shù)據(jù)賦值給實型變量,會自動添加小數(shù)位floata;a=5;printf(“%f\n”,a);125.2 賦值運算符與賦值表達式注意:?。。‘?dāng)將比較短的數(shù)值類型變量的值賦給比較長的數(shù)值類型變量數(shù)據(jù)信息不會丟失反之,數(shù)據(jù)就會降低級別表示,當(dāng)超出可表示范圍的時候數(shù)據(jù)將被截斷12floati=10.1f;intj=i;想一想,編譯器會做出什么反應(yīng)?5.2 賦值運算符與賦值表達式強制類型轉(zhuǎn)換強制類型轉(zhuǎn)換的一般形式:(類型名)表達式 floati=10.1f; intj=(int)i;注意,強制或自動類型轉(zhuǎn)換都不改變變量的類型無論是強制類型轉(zhuǎn)換,還是自動類型轉(zhuǎn)換,它都只是因本次運算需要而對變量的數(shù)據(jù)長度作臨時性轉(zhuǎn)換。在上面的程序中,i仍然是float類型的變量,只是在賦值給j的這個過程中,產(chǎn)生了一個int類型的臨時變量,它的值等于i的整數(shù)部分,完成本次運算后,這個臨時變量就消亡了。12floati=10.1f;intj=i;我們可以對上面這段程序做強制類型轉(zhuǎn)換。小測試試一試你的力以下符合C語言語法的賦值表達式是:A.a=1+b+c=a+2B.a=1+b,c=a+2C.a=1+b,c++,d+2D.a=1+b++=c+2a和b為double變量,a=1.2、b=3.4,則(int)a+b/b的值是:4 21.2000002.00000012+ 單目正- 單目負(fù)*

乘法/ 除法% 取模+ 加法- 減法這里需要說明的是除法和取模運算。除法:7/2=3,-5/3=-1取模:取模運算符%的兩側(cè)均為整數(shù),用于計算兩數(shù)相除的余數(shù)。7%2=1,-8%3=-2注意:單目正運算符是冗余的,只與單目負(fù)運算符構(gòu)成一對而存在。單目運算符不會改變?nèi)魏问虑?,例如不會把一個負(fù)值表達式改為正。算術(shù)運算符5.3 算術(shù)運算符與表達式用算術(shù)運算符和括號將運算對象(操作數(shù))連接起來,符合C語言規(guī)則的式子,稱為算術(shù)表達式。運算對象:常量、變量及函數(shù)等。舉例:a=(3+5)/b;c=d-e+1;k=i*j;注意?。?!如果在+、-、*、/運算的兩個數(shù)中有一個是實數(shù),則結(jié)果便為double型。算術(shù)表達式5.3 算術(shù)運算符與表達式范例:用算術(shù)表達式計算攝氏溫度5.3.3 優(yōu)先級與結(jié)合性具體介紹算術(shù)運算符的優(yōu)先級乘法、除法、取模運算的優(yōu)先級高于加減法提高優(yōu)先級的方法是給加減法添加括號()()在運算符中具有最高優(yōu)先級

算術(shù)運算符的結(jié)合性優(yōu)先級相同時,結(jié)合方向為“自左向右”12范例:++i

代表i自增1以后再使用i; --i 代表i自減1以后再使用i;i++ 代表先使用i的值再自增1; i-- 代表先使用i的值再自減1。自增++和自減--5.3.4

自增自減運算符5.3.4

自增自減運算符小試牛刀定義變量a,為其賦初值10,使用printf()函數(shù)顯示-a++兩次上機演練

上機演練1 求解二元一次不定方程求解二元一次不定方程ax+by=c的解,其中a、b、c要求從鍵盤中輸入,其中a>0,b>0且a>=b。

上機演練2

可逆素數(shù)可逆素數(shù)是指將一個素數(shù)各位數(shù)字的順序倒過來構(gòu)成的反序數(shù)仍然是素數(shù)。按以上敘述求所有的4位素數(shù)。用來判斷操作數(shù)的大小關(guān)系。符號

功能> 大于>= 大于或等于< 小于<= 小于或等于== 等于!= 不等于關(guān)系運算符常用于兩個值的比較,比較結(jié)果是一個邏輯值,滿足條件,結(jié)果為真,否則為假。真返回1,假返回0。關(guān)系運算又叫比較運算5.4 關(guān)系運算符與表達式關(guān)系表達式中,關(guān)系運算符兩側(cè)的表達式可以是算術(shù)表達式、關(guān)系表達式、邏輯表達式、賦值表達式及字符表達式。比較后,會返回一個真值1或假值0。x>y;‘x’>’y’;a+b>b+c;(m=4)<(n=8);(i>j)!=(j<k);注意?。?!在判斷時,一定要注意等號運算符==的使用,不能和賦值運算符=弄混。如右上方的代碼,很多同學(xué)都寫過,原本目的是想判斷Amount變量是否等于100,在等于100的時候執(zhí)行if條件內(nèi)的復(fù)合語句。但實際上,這是一個對變量Amount賦值100的式子,它的結(jié)果是非0,即為真。因此,這個if內(nèi)的復(fù)合語句將始終被運行,程序?qū)⒂肋h(yuǎn)遇不到else的狀態(tài)。這就是邏輯錯誤。關(guān)系運算符連接兩個表達式、符合C語法規(guī)則的式子:關(guān)系表達式5.4.2 關(guān)系表達式關(guān)系運算符<、<=、>、>=的優(yōu)先級相同==和!=的優(yōu)先級相同前4種運算符優(yōu)先級高于后兩種。它們的結(jié)合性都是從左向右依次結(jié)合??醋筮叺拇a。!=的優(yōu)先級要高于=這個賦值運算符所以這個條件判斷最后成了賦值運算,結(jié)果將同編程者初始意愿相悖。正確的寫法應(yīng)該是:if((Number=NewNum)!=10)注意??!關(guān)系運算符的優(yōu)先級要低于算術(shù)運算符關(guān)系運算又叫比較運算5.4.3 優(yōu)先級與結(jié)合性關(guān)系運算符的使用:算術(shù)運算符關(guān)系運算符賦值運算符大于大于優(yōu)先級沿箭頭方向遞減小測試試一試你的力用1代表真,用0代表假。假設(shè)a=3,b=2,c=1,則下列表達式值為0的是:A.a+c>bB.d=a>b>cC.a>cD.(a>b)==c有運算符>、=、%,將它們按優(yōu)先級由低到高排列應(yīng)該是:12&& 邏輯與運算符:一假必假|(zhì)| 邏輯或運算符:一真必真!

邏輯非運算符:真假相對關(guān)于優(yōu)先級:!的優(yōu)先級,大于&&的優(yōu)先級,大于||的優(yōu)先級綜合運算優(yōu)先級:!高于算術(shù)運算符高于關(guān)系運算符高于&&和||高于賦值運算符邏輯運算符5.5

邏輯運算符與表達式a=5,b=7,則a&&b的值=1。a=5,b=7,則a||b的值=1。a=5,則!a的值=0。&&運算,

第一個操作數(shù)被判定為假,則系統(tǒng)將不再判定或求解第二個操作數(shù)。||運算,

第一個操作數(shù)被判定為真,則系統(tǒng)將不再判定或求解第二個操作數(shù)。一些范例5.5

邏輯運算符與表達式自左向右。結(jié)合性5.5.3

優(yōu)先級和結(jié)合性上機演練

上機演練3

判斷閏年從鍵盤上輸入一個表示年份的整數(shù),判斷該年份是否是閏年,判斷后的結(jié)果顯示在屏幕上。以前在實戰(zhàn)里涉及過閏年的算法,所以這一次不能查網(wǎng)絡(luò),試著自己寫出來吧。上機演練

上機演練4

黑紙與白紙有A、B、C、D、E5個人,每人額頭上都貼了一張黑色或白色的紙條。5人對坐,每人都可以看到其他人額頭上的紙的顏色,但都不知道自己額頭上的紙的顏色。5人相互觀察后,A說:“我看見有3個人額頭上貼的是白紙,一個人額頭上貼的是黑紙。”B說:“我看見其他4人額頭上貼的都是黑紙?!盋說:“我看見有一個人額頭上貼的是白紙,其他3個人額頭上貼的是黑紙?!盌說:“我看見其他4人額頭上貼的都是白紙?!盓說:“我不發(fā)表觀點?!爆F(xiàn)在已知額頭貼黑紙的人說的都是謊話,額頭貼白紙的人說的都是實話,問這5個人誰的額頭上貼的是黑紙,誰的額頭上貼的是白紙。& 按位與

雙目| 按位或

雙目

^ 按位異或

雙目~ 取補

單目例如:If(a&b)這個判斷就是讓a和b按位匹配。位邏輯運算是C語言里很特別的一部分,它可以實現(xiàn)位的設(shè)置、清零、取反、取補操作。它能實現(xiàn)許多匯編語言才能實現(xiàn)的功能。程序員用它們來作為開關(guān)標(biāo)志。位邏輯運算符5.6

位邏輯運算符與表達式小測試試一試你的力以下是單目運算符的是:A.&B.|C.^D.~在C語言中,&作為雙目運算符時表示的是:12一般形式是:表達式1,表達式2,……,表達式n求解過程:先求表達式1,再求表達式2,一直求解到表達式n。整個逗號表達式的值是表達式n的值。小范例:K=1+1,2+2,3+3;最后它的值是多少?K=(1+1,2+2,3+3);最后它的值是多少?注意??!逗號運算符的優(yōu)先級是最低的。逗號運算符又名順序求值運算符5.7

逗號運算符與表達式自左向右。結(jié)合性5.7

逗號運算符與表達式小測試試一試你的力在“inta,b,c;”語句中,逗號的作用是:在聲明變量的時候,逗號作為分隔符,用來分隔聲明變量。這個時候,它不是運算符。表達式“a=1,4+5,8”的值是:12結(jié)合方式也是由左向右表示方法:以上語句簡化后就是條件運算符max=(a>b)?a:b;C語言中唯一的三目運算符5.8

條件運算符與表達式小測試試一試你的力假設(shè)變量a=3,b=4,c=5,則表達式a>3?a+c:b>4?b+c:c它的值是多少?下列運算符中,又一個運算符與其他運算符不同,它是:12A、=B、&&C、?:D、%如+=、-=、*=、/=、%=、&=等形式:變量雙目運算符=表達式例如:i+=3

溫馨提示

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

最新文檔

評論

0/150

提交評論