資源描述:
《關(guān)系運(yùn)算與邏輯運(yùn)算if語(yǔ)句》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、第7講關(guān)系運(yùn)算與邏輯運(yùn)算if語(yǔ)句4.1關(guān)系運(yùn)算和邏輯運(yùn)算4.2if語(yǔ)句第四章選擇結(jié)構(gòu)程序設(shè)計(jì)24.1.1邏輯值及其在C語(yǔ)言中的表示關(guān)系運(yùn)算和邏輯運(yùn)算的運(yùn)算結(jié)果都是一個(gè)邏輯值,邏輯值只有兩個(gè)值,即:“真”和“假”。在C語(yǔ)言中,用數(shù)值1來(lái)表示“真”,用數(shù)值0來(lái)表示“假”。因此邏輯值也可以作為一個(gè)整數(shù)參與算術(shù)運(yùn)算。反之,對(duì)于參與關(guān)系運(yùn)算或邏輯運(yùn)算的任意一個(gè)表達(dá)式,如果該表達(dá)式的值為零,就代表一個(gè)邏輯“假”值;只要表達(dá)式的值不是零,無(wú)論是正數(shù)還是負(fù)數(shù),都代表一個(gè)邏輯“真”值。34.1.2關(guān)系運(yùn)算符與關(guān)系表達(dá)式所謂“關(guān)系運(yùn)算”實(shí)際上就是“比較運(yùn)算”,即將兩
2、個(gè)數(shù)據(jù)進(jìn)行比較,判定兩個(gè)數(shù)據(jù)是否符合給定的關(guān)系。例如,“a>b”中的“>”表示一個(gè)大于關(guān)系運(yùn)算。如果a的值是8,b的值是5,則這個(gè)關(guān)系運(yùn)算的結(jié)果為“真”,即數(shù)值1,表示條件成立;如果a的值是6,b的值是9,則運(yùn)算的結(jié)果為“假”,即數(shù)值0,表示條件不成立。41.關(guān)系運(yùn)算符及其優(yōu)先級(jí)C語(yǔ)言提供了六種關(guān)系運(yùn)算符,如表4.1所示。注意:有些運(yùn)算符是由兩個(gè)字符組合而成的,如:<=;其兩個(gè)字符之間不能有空格。在關(guān)系運(yùn)算符中,前4個(gè)優(yōu)先級(jí)相同,后2個(gè)也相同,且前4個(gè)關(guān)系運(yùn)算符的優(yōu)先級(jí)高于后2個(gè)。所有關(guān)系運(yùn)算符的優(yōu)先級(jí)都比算術(shù)運(yùn)算符的優(yōu)先級(jí)低、但都比賦值運(yùn)算符的
3、優(yōu)先級(jí)高。表4.1關(guān)系運(yùn)算符及其優(yōu)先級(jí)10952.關(guān)系表達(dá)式用關(guān)系運(yùn)算符將兩個(gè)操作數(shù)(常量、變量或表達(dá)式)連接起來(lái),進(jìn)行關(guān)系運(yùn)算的式子,稱(chēng)為關(guān)系表達(dá)式。例如,假設(shè)n1=5,n2=8,n3=10,則:(1)關(guān)系表達(dá)式n1==n2的值為0。(2)關(guān)系表達(dá)式n1<=n3的值為1。(3)關(guān)系表達(dá)式n1+n2>n3的值為1。(4)關(guān)系表達(dá)式n1==n2>n3的值等為0。注意:由于存在存儲(chǔ)誤差和轉(zhuǎn)換誤差,不能直接用關(guān)系運(yùn)算符“==”來(lái)判斷兩個(gè)實(shí)型數(shù)是否相等。單精度實(shí)數(shù):fabs(x-y)<0.000001雙精度實(shí)數(shù):fabs(a-b)<1e-1461.邏輯運(yùn)
4、算符及其優(yōu)先級(jí)C語(yǔ)言提供了三種基本的邏輯運(yùn)算符。邏輯代數(shù)的其它邏輯運(yùn)算都可以轉(zhuǎn)化為這三種邏輯運(yùn)算的組合。4.1.3邏輯運(yùn)算符與邏輯表達(dá)式優(yōu)先級(jí)次序:!(邏輯非)14算術(shù)運(yùn)算符13/12關(guān)系運(yùn)算符10/9&&(邏輯與)5
5、
6、(邏輯或)4賦值運(yùn)算符2表4.2邏輯運(yùn)算符及其優(yōu)先級(jí)14右結(jié)合4572.邏輯表達(dá)式由邏輯運(yùn)算符和運(yùn)算對(duì)象所組成的表達(dá)式稱(chēng)為邏輯表達(dá)式。邏輯運(yùn)算的對(duì)象可以是C語(yǔ)言中任意合法的表達(dá)式。例如:在關(guān)系表達(dá)式(x>y)為真的條件下,若a值為10,b值為16,表達(dá)式(a>b)&&(x>y)的值為“假”,用數(shù)值0來(lái)表示;若a值為10,b值為6
7、,表達(dá)式(a>b)&&(x>y)的值則為“真”,用數(shù)值1來(lái)表示。表4.3邏輯運(yùn)算符的運(yùn)算規(guī)則8數(shù)學(xué)表達(dá)式08、
9、(year%400
10、==0)9“非完全求解”法:當(dāng)求出某個(gè)邏輯運(yùn)算符的左邊的運(yùn)算量的值就能夠明確地確定這個(gè)邏輯運(yùn)算的結(jié)果時(shí),就結(jié)束求解過(guò)程,直接給出運(yùn)算結(jié)果。例如:(1)a&&b&&c若a為“假”,直接求得a&&b及整個(gè)表達(dá)式的值為“假”;若a為“真”,b為“假”,a&&b及整個(gè)表達(dá)式的值為“假”。只有當(dāng)a為“真”時(shí),才需要判別b的值;只有當(dāng)a&&b的值為“真”時(shí),才需要判別c的值。(2)a
11、
12、b
13、
14、c若a為“真”,直接求得a
15、
16、b及整個(gè)表達(dá)式的值為“真”;若a為“假”,b為“真”,a
17、
18、b及整個(gè)表達(dá)式的值為“真”;只有當(dāng)a為“假”時(shí),才需要判別b的值;只有當(dāng)a
19、
20、
21、b的值為“假”時(shí),才需要判別c的值。邏輯表達(dá)式的“非完全求解”法10例:“非完全求解”#include"stdio.h"voidmain(){intx,a,b,c;a=1;b=2;c=3;x=(a-1)&&(++b)&&(++c);printf("1:a=%d,b=%d,c=%d,x=%d",a,b,c,x);a=1;b=2;c=3;x=a&&(b-2)&&(++c);printf("2:a=%d,b=%d,c=%d,x=%d",a,b,c,x);a=1;b=2;c=3;x=a&&(++b)&&(++c);printf("3:a=%d,b
22、=%d,c=%d,x=%d",a,b,c,x);}114.2if語(yǔ)句1.if語(yǔ)句的一般形式if(表達(dá)式)語(yǔ)句1[else語(yǔ)句2]if