資源描述:
《c語(yǔ)言程序設(shè)計(jì)程序控制流程――選擇結(jié)構(gòu).doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、第五章程序控制流程——選擇結(jié)構(gòu)5.1關(guān)系運(yùn)算符和邏輯運(yùn)算符一、關(guān)系運(yùn)算符和關(guān)系表達(dá)式1.關(guān)系運(yùn)算符(1)關(guān)系運(yùn)算符的分類C語(yǔ)言為用戶提供了6個(gè)關(guān)系運(yùn)算符:<(小于)、<=(小于等于)、>(大于)、>=(大于等于)、==(關(guān)系相等)和!=(關(guān)系不等).(2)關(guān)系運(yùn)算符的優(yōu)先級(jí)關(guān)系運(yùn)算符內(nèi)部?jī)?yōu)先級(jí)是<、<=、>、>=的優(yōu)先級(jí)相等,且優(yōu)先級(jí)高于==和!=.在C語(yǔ)言所有運(yùn)算符中,關(guān)系運(yùn)算符的優(yōu)先級(jí)要低于算術(shù)運(yùn)算符和位移運(yùn)算符.(3)關(guān)系運(yùn)算符的結(jié)合性所有的關(guān)系運(yùn)算符的結(jié)合性都是從左至右.2.關(guān)系表達(dá)式的基本形式有值表達(dá)式1op有值表達(dá)式2,其中op代表6個(gè)
2、關(guān)系運(yùn)算符.關(guān)系表達(dá)式的結(jié)果要么為0(操作數(shù)不滿足關(guān)系運(yùn)算),要么為1(操作數(shù)滿足關(guān)系運(yùn)算).假設(shè)有以下變量定義:inta=1,b=-3,c=2,i=13;以下都是合法的關(guān)系表達(dá)式:a>b、i<=10、a+b(b=5)、a==5、a+b==2009、a!=b+2、b*b>=4*a*c等.3.關(guān)系運(yùn)算符的使用(1)帶有關(guān)系運(yùn)算符的復(fù)雜表達(dá)式計(jì)算【例5.1】當(dāng)a=3,b=2,c=1時(shí),表達(dá)式f=a>b>c的值是.【例5.2】下面關(guān)系表達(dá)式中結(jié)果為假的是.A)0!=1B)2<=8C)(a=2*2)==2D)y=(2+2)==4說(shuō)明:
3、在C語(yǔ)言中用一切非0數(shù)(往往是1)表示邏輯真,0表示邏輯假.【課內(nèi)思考題5.1】當(dāng)a=5,b=4,c=2時(shí),表達(dá)式a>b!=c的值是.(2)關(guān)系運(yùn)算中的隱式類型轉(zhuǎn)換【例5.3】分析下面程序的輸出結(jié)果,并說(shuō)明原因.#includemain(){inti=-10;unsignedintj=1;printf("imain(){doublea=.9
4、*9,b=.1;doublec=0.1+0.2;printf("c==0.3%d",c==0.3);printf("a==b%d",a==b);}【例5.4】比較兩個(gè)浮點(diǎn)數(shù)是否相等的正確方法#include#include#defineYUZHI1e-6main(){doublea=.9*9,b=.1;doublec=0.1+0.2;printf("a=%.9f,b=%.9f",a,b);printf("a==b%d",a==b);printf("a==b%d",fabs(a-b)<=YUZHI
5、);printf("c==0.3%d",c==0.3);printf("c==0.3%d",fabs(c-0.3)<=YUZHI);}說(shuō)明:應(yīng)該避免直接比較兩個(gè)浮點(diǎn)數(shù)是否相等,而是通過(guò)看兩個(gè)浮點(diǎn)數(shù)差的絕對(duì)值是否小于某個(gè)很小的數(shù)來(lái)達(dá)到判斷兩個(gè)浮點(diǎn)數(shù)是否相等.二、邏輯運(yùn)算符和邏輯表達(dá)式1.邏輯運(yùn)算符(1)邏輯運(yùn)算符的分類C語(yǔ)言為用戶提供了3個(gè)邏輯運(yùn)算符:!(邏輯非)、&&(邏輯與)和
6、
7、(邏輯或).(2)邏輯運(yùn)算符的優(yōu)先級(jí)其中!(邏輯非)是單目運(yùn)算符,在C語(yǔ)言所有運(yùn)算符中優(yōu)先級(jí)排第二(所有的單目運(yùn)算符優(yōu)先級(jí)都是第二).&&(邏輯與)的優(yōu)先級(jí)高于
8、
9、
10、(邏輯或),
11、
12、的優(yōu)先級(jí)高于?:(條件運(yùn)算符).(3)邏輯運(yùn)算符的結(jié)合性其中!(邏輯非)的結(jié)合性是從右至左(所有的單目運(yùn)算符的結(jié)合性都是從右至左),&&和
13、
14、的結(jié)合性是從左至右.2.邏輯表達(dá)式的基本形式!有值表達(dá)式1,有值表達(dá)式1&&有值表達(dá)式2,有值表達(dá)式1
15、
16、有值表達(dá)式2.邏輯表達(dá)式的結(jié)果見下表:有值表達(dá)式1有值表達(dá)式2!有值表達(dá)式1有值表達(dá)式1&&有值表達(dá)式2有值表達(dá)式1
17、
18、有值表達(dá)式2非0非0011非000010非010100100說(shuō)明:實(shí)際編程時(shí),總是用邏輯運(yùn)算符去連接關(guān)系表達(dá)式.3.邏輯運(yùn)算符的使用(1)帶有邏輯運(yùn)算符的復(fù)雜表達(dá)式計(jì)
19、算【例5.5】以下程序的運(yùn)行結(jié)果是.#includemain(){inta,b,d=241;a=d/100%9;b=(-1)&&(-1);printf("%d,%d",a,b);}A)6,1B)2,1C)6,0D)2,0【課內(nèi)思考題5.2】若a=2,b=4,則表達(dá)式!(x=a)
20、
21、(y=b)&&0的值是.【課內(nèi)思考題5.3】inta=3,b=4,c=5;,則以下表達(dá)式!(a+b)+c-1&&b+c/2的值為.(2)短路計(jì)算對(duì)于邏輯表達(dá)式“表達(dá)式1&&表達(dá)式2&&…&&表達(dá)式n”而言,若在計(jì)算過(guò)程中發(fā)現(xiàn)表達(dá)式m的值為0,根據(jù)&&的特
22、點(diǎn),整個(gè)邏輯表達(dá)式的結(jié)果肯定為0,為提高計(jì)算效率,編譯器不會(huì)計(jì)算從表達(dá)式m+1開始的后序表達(dá)式了,稱為短路計(jì)算.同樣對(duì)于“