C語言提供了一組邏輯運(yùn)算符:或(||),、且(&&),、非(!),分別對應(yīng)于命題邏輯中的 OR,、AND,、NOT運(yùn)算,。 - 邏輯運(yùn)算符:或 ||。在命題邏輯中,,當(dāng)P=1或Q=1時(shí),,P||Q等于1。
- 邏輯運(yùn)算符:且 &&,。在命題邏輯中,,當(dāng)P=1且Q=1時(shí),P&&Q才等于1,。
- 邏輯運(yùn)算符:非 !,。在命題邏輯中,當(dāng)P等于0時(shí),,!P等于1,,反之亦然。
邏輯運(yùn)算認(rèn)為所有非零的參數(shù)都表示為TRUE,,而參數(shù)0表示FALSE,,它們返回1(TRUE)或0(FALSE)。 邏輯運(yùn)算符&&和||與對應(yīng)的位級運(yùn)算&和|之間一個(gè)重要區(qū)別是,,如果對第一個(gè)參數(shù)求值就能確定表達(dá)式的結(jié)果,,那么邏輯運(yùn)算符就不會對第二個(gè)參數(shù)求值。 - 對于 x && y:當(dāng)邏輯與左邊x為FALSE時(shí),,則不再進(jìn)行右邊y的判斷,,結(jié)果為FALSE。因此,,若a=0,,表達(dá)式 a && 5/a 將不會造成除零。
- 對于 x || y:當(dāng)邏輯或左邊x為FALSE,,繼續(xù)右邊y的判斷,,如果為TRUE,則邏輯或結(jié)果為TRUE,;當(dāng)邏輯或左邊x為TRUE,,則不再進(jìn)行右邊y的判斷,即邏輯或結(jié)果為TRUE,。
邏輯運(yùn)算符和其它運(yùn)算符優(yōu)先級從低到高依次為: 邏輯非 ! > 算術(shù)運(yùn)算符 > 關(guān)系運(yùn)算符 > 邏輯與 &&、邏輯或 || > 賦值=
更詳細(xì)的運(yùn)算符優(yōu)先級可參考之前發(fā)布的文章:《C運(yùn)算符的優(yōu)先級和結(jié)合性》
|