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