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