上次我們講了關係運算符<=、>、!=等符號,如果不明白的,可以查看我的上一篇文章。
現在講邏輯運算符,C語言許多的運算符你是不是傻傻分不清楚,只要你認真看完此文,那都不是事。
在高中數學中,我們就學過邏輯運算,例如p為真命題,q為假命題,那麼“p且q”為假,“p或q”為真,“非q”為真。在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;
}
運行結果:
優先級
邏輯運算符和其它運算符優先級從低到高依次為:
賦值運算符(=) < &&和|| < 關係運算符 < 算術運算符 < 非(!)
&& 和 || 低於關係運算符,! 高於算術運算符。
按照運算符的優先順序可以得出:
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語言的常用運算符差不多了,這個東西還是要記住啊,主要是知識的積累,
多看程序,最好自己上機碼一下代碼。
閱讀更多 源世界Z 的文章