第五講運(yùn)算符與表達(dá)式_第1頁
第五講運(yùn)算符與表達(dá)式_第2頁
第五講運(yùn)算符與表達(dá)式_第3頁
第五講運(yùn)算符與表達(dá)式_第4頁
第五講運(yùn)算符與表達(dá)式_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、2022年2月16日星期三第五講 運(yùn)算符和表達(dá)式講師講師:程浩學(xué)習(xí)目標(biāo)1.熟練應(yīng)用各種算術(shù)運(yùn)算符的優(yōu)先級和結(jié)合性n2.熟練應(yīng)用各關(guān)系運(yùn)算符的優(yōu)先級和關(guān)系表達(dá)式值的判定n3.熟練應(yīng)用各邏輯運(yùn)算符的優(yōu)先級和邏輯表達(dá)式值的判定n4.熟練應(yīng)用賦值運(yùn)算符的結(jié)合性和優(yōu)先級n5.熟練應(yīng)用自增/減運(yùn)算符的作用、自增/減運(yùn)算的前置方式和后置方式的區(qū)別n6.理解逗號表達(dá)式的作用及其值的計算7.了解C語言的常用運(yùn)算符的優(yōu)先級 學(xué)習(xí)重點(diǎn):n算術(shù)運(yùn)算符的優(yōu)先級和結(jié)合性n關(guān)系運(yùn)算符的優(yōu)先級和關(guān)系表達(dá)式值的判定n邏輯運(yùn)算符的優(yōu)先級和邏輯表達(dá)式值的判定學(xué)習(xí)難點(diǎn):n自增/減運(yùn)算符的作用、自增/減運(yùn)算的前置方式和后置方式的區(qū)別一

2、、算術(shù)運(yùn)算符及算術(shù)表達(dá)式(1)n算術(shù)運(yùn)算符算術(shù)運(yùn)算符+ :加法運(yùn)算符。如:加法運(yùn)算符。如1+2的結(jié)果為的結(jié)果為3。- :減法運(yùn)算符,或負(fù)值運(yùn)算符。如:減法運(yùn)算符,或負(fù)值運(yùn)算符。如5-3、-2的結(jié)果的結(jié)果 分別為分別為2和和-2。* :乘法運(yùn)算符。如:乘法運(yùn)算符。如2*3的結(jié)果為的結(jié)果為6。/ :除法運(yùn)算符。如:除法運(yùn)算符。如4/2的結(jié)果為的結(jié)果為2。% :模運(yùn)算符,或稱取余運(yùn)算符,要求:模運(yùn)算符,或稱取余運(yùn)算符,要求%兩側(cè)均為整兩側(cè)均為整型數(shù)據(jù)。如型數(shù)據(jù)。如 8%3的結(jié)果為的結(jié)果為2。n注意注意運(yùn)算的數(shù)據(jù)都是整型數(shù)據(jù)時,結(jié)果為整型,如果有實(shí)運(yùn)算的數(shù)據(jù)都是整型數(shù)據(jù)時,結(jié)果為整型,如果有實(shí)數(shù),則結(jié)

3、果為數(shù),則結(jié)果為double型。型。模運(yùn)算符要求運(yùn)算符兩側(cè)必須為整型數(shù)據(jù),如果不是模運(yùn)算符要求運(yùn)算符兩側(cè)必須為整型數(shù)據(jù),如果不是整型數(shù)據(jù)可以采用強(qiáng)制類型轉(zhuǎn)換。例如整型數(shù)據(jù)可以采用強(qiáng)制類型轉(zhuǎn)換。例如x為為float型,型, (int)x%2一、算術(shù)運(yùn)算符及算術(shù)表達(dá)式(2)n算術(shù)表達(dá)式算術(shù)表達(dá)式用用算術(shù)運(yùn)算符算術(shù)運(yùn)算符將數(shù)據(jù)對象連接起來的式子,稱為將數(shù)據(jù)對象連接起來的式子,稱為算術(shù)算術(shù)表達(dá)式表達(dá)式。表達(dá)式的運(yùn)算按照運(yùn)算符的結(jié)合性和優(yōu)先級。表達(dá)式的運(yùn)算按照運(yùn)算符的結(jié)合性和優(yōu)先級來進(jìn)行。來進(jìn)行。C規(guī)定了運(yùn)算符的結(jié)合方向,即規(guī)定了運(yùn)算符的結(jié)合方向,即結(jié)合性結(jié)合性。算術(shù)運(yùn)算符的。算術(shù)運(yùn)算符的結(jié)合性是結(jié)合性

4、是從左往右從左往右算。例如表達(dá)式算。例如表達(dá)式2+3+4,先算先算2+3C語言規(guī)定負(fù)值運(yùn)算符優(yōu)先級語言規(guī)定負(fù)值運(yùn)算符優(yōu)先級高于高于乘、除、模運(yùn)算符,乘、除、模運(yùn)算符,乘、除、模運(yùn)算符優(yōu)先級乘、除、模運(yùn)算符優(yōu)先級高于高于加、減運(yùn)算符,當(dāng)表達(dá)加、減運(yùn)算符,當(dāng)表達(dá)式中優(yōu)先級相同時,按照運(yùn)算符的結(jié)合性。式中優(yōu)先級相同時,按照運(yùn)算符的結(jié)合性。n例如例如:3+4*3/-2,計算次序:,計算次序:-、*、/、+。n如果需要先計算優(yōu)先級低的可以使用小括號如果需要先計算優(yōu)先級低的可以使用小括號“()()”,小括號的優(yōu)先級最高,小括號的優(yōu)先級最高。一、算術(shù)運(yùn)算符及算術(shù)表達(dá)式(3)n例題例題程序程序L5_1.C功能

5、:計算功能:計算a+3*-2/(int)(a+b)-12的結(jié)果,其中的結(jié)果,其中a=1.7,b=2.4。#include void main() float a=1.7,b=2.4,s;s= a+3*-2/(int)(a+b)-12printf(result is %fn,s);二、關(guān)系運(yùn)算符及關(guān)系表達(dá)式(1)n關(guān)系運(yùn)算符關(guān)系運(yùn)算符4。= :小于等于運(yùn)算符。如:小于等于運(yùn)算符。如3 :大于運(yùn)算符。如:大于運(yùn)算符。如xy。= :大于等于運(yùn)算符。如:大于等于運(yùn)算符。如x=0。= :等于運(yùn)算符。如:等于運(yùn)算符。如a= =b。!= :不等于運(yùn)算符。如:不等于運(yùn)算符。如y!=1。n兩個數(shù)據(jù)在進(jìn)行值的比較

6、,其結(jié)果不是兩個數(shù)據(jù)在進(jìn)行值的比較,其結(jié)果不是“真真”就是就是“假假”。n在在C語言中,任何語言中,任何非非0值為值為“真真”,0值為值為“假假”。關(guān)。關(guān)系運(yùn)算的結(jié)果系運(yùn)算的結(jié)果僅產(chǎn)生兩個值僅產(chǎn)生兩個值:1表示表示“真真”,0表示表示“假假”。 二、關(guān)系運(yùn)算符及關(guān)系表達(dá)式(2)n關(guān)系運(yùn)算符結(jié)合性與優(yōu)先級關(guān)系運(yùn)算符結(jié)合性與優(yōu)先級關(guān)系運(yùn)算符的結(jié)合性為關(guān)系運(yùn)算符的結(jié)合性為“自左至右自左至右”。 例如例如543,計算時先算,計算時先算54,條件成立結(jié)果為,條件成立結(jié)果為1,再與再與3比較,即比較,即13,條件不成立,所以最終結(jié)果為,條件不成立,所以最終結(jié)果為0。關(guān)系運(yùn)算符中關(guān)系運(yùn)算符中、=的優(yōu)先級相等

7、,的優(yōu)先級相等,= =、!=優(yōu)先級相等,且前者優(yōu)先級相等,且前者高于高于后者。后者。 例如例如1= =43,“”的優(yōu)先級高于的優(yōu)先級高于“= =”,所以,所以43結(jié)果為結(jié)果為1,1= =1結(jié)果為結(jié)果為1。關(guān)系運(yùn)算符的級別關(guān)系運(yùn)算符的級別小于小于算術(shù)運(yùn)算符。例如算術(shù)運(yùn)算符。例如2+35-1,運(yùn)算次序?yàn)檫\(yùn)算次序?yàn)?、。二、關(guān)系運(yùn)算符及關(guān)系表達(dá)式(3)n用關(guān)系運(yùn)算符將兩個數(shù)據(jù)或表達(dá)式連接起來的式子,用關(guān)系運(yùn)算符將兩個數(shù)據(jù)或表達(dá)式連接起來的式子,稱為稱為關(guān)系表達(dá)式關(guān)系表達(dá)式。關(guān)系表達(dá)式的值為。關(guān)系表達(dá)式的值為1或或0。n例例5.2 閱讀程序,寫出結(jié)果并演算。閱讀程序,寫出結(jié)果并演算。#include

8、void main() int a=5,b=4,c=3; int s,t; if (abc) s=a; else s=0; t=(a-cc+2= =0); printf(s=%d,t=%dn,s,t); n舉一反三舉一反三 :計算:計算2+4= =6*(2!=1)的結(jié)果。的結(jié)果。三、邏輯運(yùn)算符及邏輯表達(dá)式(1)n邏輯運(yùn)算符邏輯運(yùn)算符邏輯運(yùn)算表示兩個數(shù)據(jù)或表達(dá)式之間的邏輯關(guān)系。邏輯運(yùn)算表示兩個數(shù)據(jù)或表達(dá)式之間的邏輯關(guān)系。C語言提供的語言提供的邏輯運(yùn)算符邏輯運(yùn)算符有三種:邏輯與運(yùn)算符有三種:邏輯與運(yùn)算符“&”、邏輯或運(yùn)算符、邏輯或運(yùn)算符“”、邏輯非運(yùn)算符、邏輯非運(yùn)算符“!”。邏輯運(yùn)算的結(jié)果也只有兩

9、個:邏輯運(yùn)算的結(jié)果也只有兩個:“真真”為為1和和“假假”為為0。n邏輯與邏輯與,即,即&:為便于理解,可以寫為:為便于理解,可以寫為“條件條件1&條件條件2”,則邏輯與運(yùn)算結(jié)果為則邏輯與運(yùn)算結(jié)果為“只有當(dāng)條件只有當(dāng)條件1成立成立并且并且條件條件2也成立也成立時,時,邏輯與邏輯與成立,結(jié)果為成立,結(jié)果為“真真”即值即值1,其余情況結(jié)果為,其余情況結(jié)果為“假假”即值即值0”。所以條件。所以條件1或條件或條件2只要有一個不成立,邏只要有一個不成立,邏輯與的結(jié)果都為輯與的結(jié)果都為“假假”。如。如(x3)&(x3) (x3),則,則x取值不是大于取值不是大于3的,即的,即x小于等于小于等于3時,結(jié)果為時

10、,結(jié)果為1,否則結(jié)果為,否則結(jié)果為0。三、邏輯運(yùn)算符及邏輯表達(dá)式(3)n邏輯運(yùn)算符#include void main()printf(%d,%d,%d,%dn,(43)&(51),(41),(43)&(51),(43)&(53) (51),(41),(43) (51),(43) (53),!(43); 運(yùn)行結(jié)果 :1,0,0,01,1,1,00,1三、邏輯運(yùn)算符及邏輯表達(dá)式(4)n邏輯運(yùn)算符結(jié)合性與優(yōu)先級邏輯運(yùn)算符結(jié)合性與優(yōu)先級邏輯運(yùn)算符邏輯運(yùn)算符“!”的結(jié)合性為的結(jié)合性為“自右至左自右至左”、“&”和和“”的結(jié)合性為的結(jié)合性為“自左至右自左至右”。邏輯運(yùn)算符的優(yōu)先級為邏輯運(yùn)算符的優(yōu)先級為“

11、!”高于高于“&”高于高于“”。例如表。例如表達(dá)式達(dá)式!(35)&(41),則,則!的運(yùn)算結(jié)果為假、的運(yùn)算結(jié)果為假、&的的運(yùn)算結(jié)果為假,最終運(yùn)算結(jié)果為假,最終的結(jié)果為假,即該表達(dá)式的值為的結(jié)果為假,即該表達(dá)式的值為0?!埃 钡膬?yōu)先級的優(yōu)先級高于高于算術(shù)運(yùn)算符,算術(shù)運(yùn)算符,“&”和和“”的優(yōu)先級的優(yōu)先級低于低于關(guān)系運(yùn)算符。例如:關(guān)系運(yùn)算符。例如:3+1626)(2b!=0&!(a= =0)等價于等價于(ab)!=0)&(!(a= =0),如果如果a=4,b=3,結(jié)果為,結(jié)果為1。三、邏輯運(yùn)算符及邏輯表達(dá)式(4)n邏輯表達(dá)式邏輯表達(dá)式邏輯表達(dá)式的值為邏輯表達(dá)式的值為1或或0。由于。由于C語言編譯系

12、統(tǒng)在判斷一個量為語言編譯系統(tǒng)在判斷一個量為“真真”、“假假”時,時,以以0為為“假假”,以非,以非0為為“真真”。所以邏輯運(yùn)。所以邏輯運(yùn)算符也可以直接連接數(shù)據(jù),如算符也可以直接連接數(shù)據(jù),如!4的結(jié)果為的結(jié)果為0、3&0的結(jié)果為的結(jié)果為0。例例5.3 閱讀程序,寫出結(jié)果并演算。閱讀程序,寫出結(jié)果并演算。 #include void main() int a=5,b=4,c=3; int s,t; if (ab&ac) s=a; else s=0; t=!(a-c12&0); printf(s=%d,t=%dn,s,t); 舉一反三舉一反三 :計算:計算20&(3-2*4)的結(jié)果。的結(jié)果。4為非0

13、,即為真!4!(真)假0三、邏輯運(yùn)算符及邏輯表達(dá)式(5)n熟練掌握熟練掌握C語言的關(guān)系運(yùn)算符和邏輯運(yùn)算符,可以自語言的關(guān)系運(yùn)算符和邏輯運(yùn)算符,可以自如地描述各種復(fù)雜的條件。如地描述各種復(fù)雜的條件。n例如要判斷某一年例如要判斷某一年year是否是閏年,需要滿足下列條是否是閏年,需要滿足下列條件之一:件之一:該年可以被該年可以被4整除,但不能被整除,但不能被100整除。整除。該年可以被該年可以被400整除。整除。 則可以用邏輯表達(dá)式表示為:則可以用邏輯表達(dá)式表示為: (year%4= =0&year%100!=0) (year%400= =0) 上述表達(dá)式成立則為閏年,否則為非閏年。上述表達(dá)式成立

14、則為閏年,否則為非閏年。n試編程實(shí)現(xiàn):輸入一個年份,判斷是否是閏年試編程實(shí)現(xiàn):輸入一個年份,判斷是否是閏年。四、賦值運(yùn)算符及賦值表達(dá)式(1)nC語言中最常見的賦值運(yùn)算符是語言中最常見的賦值運(yùn)算符是“=”,其作,其作用是將賦值運(yùn)算符右邊的表達(dá)式賦予左邊用是將賦值運(yùn)算符右邊的表達(dá)式賦予左邊的變量的變量 變量變量=表達(dá)式表達(dá)式n例如:例如:x=4。n賦值運(yùn)算符的結(jié)合性為賦值運(yùn)算符的結(jié)合性為從右至左從右至左,其優(yōu)先,其優(yōu)先級級低于低于算術(shù)運(yùn)算符、關(guān)系運(yùn)算符和邏輯運(yùn)算術(shù)運(yùn)算符、關(guān)系運(yùn)算符和邏輯運(yùn)算符。算符。n例如例如 i=j=2+3;2+3;j=5;i=j四、賦值運(yùn)算符及賦值表達(dá)式(2)n復(fù)合賦值運(yùn)算算

15、術(shù)運(yùn)算符“+ * / %”和賦值運(yùn)算符“=”的結(jié)合+=:加賦值運(yùn)算符。如a+=3+1,等價于 a=a+(3+1)。-=:減賦值運(yùn)算符。如a-=3+1,等價于 a=a-(3+1)。*=:乘賦值運(yùn)算符。如a*=3+1,等價于 a=a*(3+1)。/=:除賦值運(yùn)算符。如a/=3+1,等價于 a=a/(3+1)%=:取余賦值運(yùn)算符.如a%=3+1,等價于a=a%(3+1)。復(fù)合賦值運(yùn)算符的作用是先將復(fù)合運(yùn)算符右邊表達(dá)式的結(jié)果與左邊的變量進(jìn)行算術(shù)運(yùn)算,然后再將最終結(jié)果賦予左邊的變量復(fù)合運(yùn)算要注意:一是復(fù)合運(yùn)算符左邊必須是變量;二是復(fù)合運(yùn)算符右邊的表達(dá)式計算完成后才參與復(fù)合賦值運(yùn)算。復(fù)合賦值運(yùn)算符的結(jié)合性

16、和優(yōu)先級等同于簡單的賦值運(yùn)算符“=”。四、賦值運(yùn)算符及賦值表達(dá)式(2)#include void main() int a=10,b=10; printf(“%dt”,a+=a- =a*a); printf(“%d ”,b+=b- =b*=b); n運(yùn)行結(jié)果 :-180 0n復(fù)合運(yùn)算符常用于某個變量自身的變化,尤其當(dāng)左邊的變量名很長時,使用復(fù)合運(yùn)算符書寫更方便。n舉一反三 :計算a=3時,表達(dá)式a*=4+(a%=2)的結(jié)果。a*a=100a=a-100=-90a=a+a=-180b=b*b=100b=b-b=0b=b+b=0五、自增運(yùn)算符與自減運(yùn)算符(1)n自增和自減運(yùn)算符主要用于給一個變量加

17、1或減1。n自增和自減運(yùn)算符及其功能如下:+:自增運(yùn)算符。如a+,+a,都等價于a=a+1。 -: 自減運(yùn)算符。如a-,-a,都等價于a=a-1。n自增和自減運(yùn)算符是單目運(yùn)算符,可以放到變量前面(前置方式)或者后面(后置方式),這兩種方式同樣實(shí)現(xiàn)了變量的自增或自減運(yùn)算。但是結(jié)果是不同的。n前置運(yùn)算時變量先做自增或自減運(yùn)算,再將變化后的變量值參加表達(dá)式中的其它運(yùn)算。后置運(yùn)算時變量在參加表達(dá)式中的其它運(yùn)算之后,再做自增或自減運(yùn)算。五、自增運(yùn)算符與自減運(yùn)算符(2)n當(dāng)a=10時,x=a+的結(jié)果是x=10,a=11。而x=+a的結(jié)果是x=11,a=11。n當(dāng)a=10時,x=a-的結(jié)果是x=10,a=9

18、。而x=-a的結(jié)果是x=9,a=9。n所以一個變量的前置自增(減)運(yùn)算和后置自增(減)運(yùn)算僅表明該變量使用其值參加運(yùn)算與其值自身變化之間的先后關(guān)系,即前置運(yùn)算是變量先變化后使用,而后置運(yùn)算是先使用后變化。n此外需要說明的是變量的自增或自減運(yùn)算與該變量在表達(dá)式中的運(yùn)算順序無關(guān)x=a;a=a+1a=a+1x=a;五、自增運(yùn)算符與自減運(yùn)算符(3)#include void main() int a1,a2,a3,a4,b1,b2,b3,b4; a1=a2=a3=a4=10; b1=(a1+)+(a1+)+(a1+); b2=(+a2)+(+a2)+(+a2); b3=(a3-)+(a3-)+(a3-

19、); b4=(-a4)+(-a4)+(-a4);printf(a1=%d,a2=%d,b1=%d,b2=%dn,a1,a2,b1,b2);printf(a3=%d,a4=%d,b3=%d,b4=%dn,a3,a4,b3,b4);n運(yùn)行結(jié)果 :a1=13,a2=13,b1=30,b2=39 a3=7,a4=7,b3=30,b2=21b1=a1+a1+a1;a1=a1+1;a1=a1+1a1=a1+1a2=a2+1;a2=a2+1a2=a2+1b2=a2+a2+a2;六、逗號運(yùn)算符及逗號表達(dá)式(1)n逗號運(yùn)算符主要用于連接表達(dá)式。: a=a+1,b=3*4;n用逗號運(yùn)算符連接起來的表達(dá)式稱為逗號表達(dá)式n表達(dá)式1,表達(dá)式2, ,表達(dá)式nn逗號表達(dá)式的運(yùn)算過程是:先算表達(dá)式1,再算表達(dá)式2,依次算到表達(dá)式n。n整個逗號表達(dá)式的值是最后一個表達(dá)式的值。逗號表達(dá)式的結(jié)合性從左至右.它的優(yōu)先級是最低的。nb=(a=4,3*4,a*2) 等價于 a=4; 3*4; b=a*2;六、逗號運(yùn)算符及逗號表達(dá)式(2)#include void main() int a=3,b=4,c=1,max,t; if (ab,ac) max=a; else max=0; t=(a+3,b+1,+c); printf(max=%d,t=%dn,max,t);運(yùn)行結(jié)果 :max=3,t=2舉一反三舉一

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論