C語言 邏輯運(yùn)算符
C語言提供了以下三種邏輯運(yùn)算符。
? ! : 邏輯非
? && : 邏輯與
? || : 邏輯或
C語言中參與邏輯運(yùn)算的操作數(shù)可以是字符型、整型、浮點(diǎn)型等數(shù)據(jù)類型。
(1)邏輯非(!)
邏輯非是單目運(yùn)算,表示對(duì)操作數(shù)取反,當(dāng)操作數(shù)為0,取反后表達(dá)式的值為1;當(dāng)操作數(shù)非0,表達(dá)式的值為1。例如:
int a=2,b=5;
! a (對(duì)a取反,a值為2,代表真,取反后結(jié)果為0)
! (a+3>b)(先算a+3>b,值為1,對(duì)0取反后為1)
(2)邏輯與(&&)
邏輯與是雙目運(yùn)算,當(dāng)邏輯與運(yùn)算符兩邊的操作數(shù)都為真,結(jié)果才為真。邏輯與運(yùn)算的執(zhí)行類似于圖中圖a所示的串聯(lián)電路,假設(shè)開關(guān)閉合狀態(tài)代表“真”,斷開狀態(tài)代表“假”;將燈泡亮的狀態(tài)代表“真”,滅的狀態(tài)代表“假”,那么只有當(dāng)K1、K2開關(guān)全部閉合(真),燈泡P才會(huì)亮(真),其他情況燈泡都不會(huì)亮。邏輯與的真值表見表所示。
例如:
int a=3,b=0,c,d;
c=a&&b;
d=a&&b+l;
c的值為假“0”,而d的值為真“1”,因?yàn)樗阈g(shù)運(yùn)算的優(yōu)先級(jí)高于邏輯運(yùn)算,所以先算b+1,再計(jì)算邏輯與操作。
d | b | !d | d&&b | allb |
0 | 1 | 1 | 0 | 1 |
0 | 0 | 1 | 0 | 0 |
1 | 1 | 0 | 1 | 1 |
1 | 0 | 0 | 0 | 1 |
★表中值為“a”用1表示,值為“假B用o表示
(3)邏輯或(||)
邏輯或也是雙目運(yùn)算。參加邏輯或運(yùn)算的兩個(gè)操作數(shù)只要有一個(gè)為真,結(jié)果就為真;兩個(gè)操作數(shù)均為假的時(shí)候,結(jié)果才為假。邏輯或的執(zhí)行類似于圖中圖b所顯示的并聯(lián)電路,只要兩個(gè)開關(guān)K1、K2有一個(gè)閉合(真),燈泡P就會(huì)亮(真)。邏輯或的真值表見表4所示。
例如:
int a=3,b=5,c,d;
c=a||b;
d=a-3||b-5;
c的值為1,因?yàn)椴僮鲾?shù)a、b都為真。而d的值為0,因?yàn)樗阈g(shù)運(yùn)算符的優(yōu)先級(jí)高于邏輯運(yùn)算,先算a-3、b-5,值均為零。所以結(jié)果為0。
點(diǎn)擊加載更多評(píng)論>>