3、,-左<,>,<=,>=左==,!=左=低右運算符的目:參與運算的操作數(shù)的個數(shù)單目、雙目、三目除=外,奇數(shù)目運算符右結(jié)合性偶數(shù)目運算符左結(jié)合性5.1.2關(guān)系表達(dá)式用關(guān)系運算符將兩個表達(dá)式(可以是算術(shù)表達(dá)式或關(guān)系表達(dá)式、邏輯表達(dá)式、賦值表達(dá)式、字符表達(dá)式)連接起來的式子,稱關(guān)系表達(dá)式。例如,下面都是合法的關(guān)系表達(dá)式:a>b,a+b>b+c,(a=3)>(b=5),’a’<’b’,(a>b)>(b<c)關(guān)系表達(dá)式的值是一個邏輯值,即“真”或“假”。例如,關(guān)系表達(dá)式“5==3”的值為“假”,“5>=0
4、”的值為“真”。C語言沒有邏輯型數(shù)據(jù)(Pascal語言以True表示“真”,以Fa1se表示“假”。PASCAL和FORTRAN等語言都有邏輯型變量和邏輯型常量),以1代表“真”,以“0”代表“假”。例如,若a=3,b=2,c=1,則:a>b的值為”真”,表達(dá)式的值為1。(a>b)==c的值為“真”(因為a>b的值為1,等于c的值),表達(dá)式的值為1。b+c<a的值為“假”,表達(dá)式的值為0。如果有以下賦值表達(dá)式:d=a>bd的值為1。f=a>b>cf的值為0(因為“>”運算符是自左至右的結(jié)合方向,
5、先執(zhí)行“a>b”,得值為1,再執(zhí)行關(guān)系運算:“1>c”得值0,賦給f5.2邏輯運算符和邏輯表達(dá)式用邏輯運算符將關(guān)系表達(dá)式或邏輯量連接起來就是邏輯表達(dá)式。下面介紹C語言中的邏輯運算符和邏輯運算。5.2.1邏輯運算符及其優(yōu)先級C語言提供三種邏輯運算符:1.&&邏輯與(相當(dāng)于其它語言中的AND)2.
6、
7、邏輯或(相當(dāng)于其它語言中的OR)3.!邏輯非(相當(dāng)于其它語言中的NOT)&&和
8、
9、”是“雙目(元)運算符”,它要求有兩個運算量(操作數(shù)),如(a>b)&&(x>y),(a>b)
10、
11、(x>y)?!?!”是“
12、一目(元)運算符”,只要求有一個運算量,如?。╝>b)。邏輯運算舉例如下:a&&b若a,b為真,則a&&b為真。a
13、
14、b若a,b之一為真,則a
15、
16、b為真。!a若a為真,則!a為假。下表為邏輯運算的“真值表”。用它表示當(dāng)a和b的值為不同組合時,各種邏輯運算所得到的值。ab!a!ba&&ba
17、
18、bTTFFTTTFFTFF在一個邏輯表達(dá)式中如果包含多個邏輯運算符,如!a&&b
19、
20、x>y&&c優(yōu)先次序:高→低!→算術(shù)運算符→關(guān)系運算符→&&→
21、
22、→賦值運算符!a&&b
23、
24、x>y&&c((!a)&&b)
25、
26、
27、((x>y)&&c)(a>b)&&(x>y)可寫成:a>b&&x>y(a==b)
28、
29、(x==y)可寫成:a==b
30、
31、x>y(!a)
32、
33、(a>b)可寫成:!a
34、
35、a>b運算符優(yōu)先級結(jié)合性!右*,/,%高左+,-左<,>,<=,>=左==,!=左&&左
36、
37、左=低右5.2.2邏輯表達(dá)式如前所述,邏輯表達(dá)式的值應(yīng)該是一個邏輯量“真”或“假”。C語言編譯系統(tǒng)在給出邏輯運算結(jié)果時,以數(shù)值1代表“真”,以0代表“假”,但在判斷一個量是否為“真”時,以0代表“假”,以非0代表“真”。即將一個非零的數(shù)值認(rèn)作為“
38、真”。例如:①若a=4,則!a的值為0。因為a的值為非0,被認(rèn)作“真”,對它進行“非”運算,得“假”,“假”以0代表。②若a=4,b=5,則a&&b的值為1。因為a和b均為非0,被認(rèn)為是“真”,因此a&&b的值也為“真”,值為1。③a、b值同前,a
39、
40、b的值為1。④a、b值同前,!a
41、
42、b的值為1。⑤4&&0
43、
44、2的值為1。通過這幾個例子可以看出,由系統(tǒng)給出的邏輯運算結(jié)果不是0就是1,不可能是其它數(shù)值。而在邏輯表達(dá)式中作為參加邏輯運算的運算對象(操作數(shù))可以是0(“假”)或任何非0的數(shù)值(按“真