C語言學習:邏輯運算符

上次我們講了關係運算符<=、>、!=等符號,如果不明白的,可以查看我的上一篇文章。

現在講邏輯運算符,C語言許多的運算符你是不是傻傻分不清楚,只要你認真看完此文,那都不是事。

C語言學習:邏輯運算符

在高中數學中,我們就學過邏輯運算,例如p為真命題,q為假命題,那麼“p且q”為假,“p或q”為真,“非q”為真。在C語言中,也有類似的邏輯運算:

C語言學習:邏輯運算符

邏輯運算的結果

在編程中,我們一般將零值稱為“假”,將非零值稱為“真”。邏輯運算的結果也只有“真”和“假”,“真”對應的值為 1,“假”對應的值為 0。

1) 與運算(&&)

參與運算的兩個表達式都為真時,結果才為真,否則為假。例如:

5&&05為真,0為假,相與的結果為假,也就是 0。

(5>0) && (4>2)5>0 的結果是1,為真,4>2結果是1,也為真,所以相與的結果為真,也就是1。

2) 或運算(||)

參與運算的兩個表達式只要有一個為真,結果就為真;兩個表達式都為假時結果才為假。例如:

10 || 010為真,0為假,相或的結果為真,也就是 1。

(5>0) || (5>8)5>0 的結果是1,為真,5>8 的結果是0,為假,所以相或的結果為真,也就是1。

3) 非運算(!)

參與運算的表達式為真時,結果為假;參與運算的表達式為假時,結果為真。例如:

!00 為假,非運算的結果為真,也就是 1。

!(5>0)5>0 的結果是1,為真,非運算的結果為假,也就是 0。

輸出邏輯運算的結果:

#include

int main(){

int a = 0, b = 10, c = -6;

int result_1 = a&&b, result_2 = c||0;

printf("%d, %d\n", result_1, !c);

printf("%d, %d\n", 9&&0, result_2);

printf("%d, %d\n", b||100, 0&&0);

return 0;

}

運行結果:

C語言學習:邏輯運算符

優先級

邏輯運算符和其它運算符優先級從低到高依次為:

賦值運算符(=) < &&和|| < 關係運算符 < 算術運算符 < 非(!)

&& 和 || 低於關係運算符,! 高於算術運算符。

按照運算符的優先順序可以得出:

  • a>b && c>d 等價於 (a>b)&&(c>d)

  • !b==c||d

  • a+b>c&&x+yc)&&((x+y)

另外,邏輯表達式也可以嵌套使用,例如a>b && b || 9>c,a || c>d && !p。

C語言的常用運算符差不多了,這個東西還是要記住啊,主要是知識的積累,

多看程序,最好自己上機碼一下代碼。


分享到:


相關文章: