对C语言中与运算符与或运算符||的探讨
生活随笔
收集整理的這篇文章主要介紹了
对C语言中与运算符与或运算符||的探讨
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C語言中,提供了以下三種邏輯運算符。
一元運算符:!(邏輯非)
二元運算符:&&(邏輯與)、||(邏輯或)
以上三種邏輯運算符中,邏輯非 ! 的優先級最高,邏輯與 && 次之,邏輯或? ||? 優先級最低。
先看題目
#include <stdio.h>int main() {int a,b,c;a=b=c=0;if(++a || ++b && ++c)printf("a=%d,b=%d,c=%d\n",a,b,c);return 0; }程序的輸出是:
a=1,b=0,c=0
在做C語言練習題的過程中,關于與運算符&&與或運算符||的優先級問題困擾了我很久,有人說&&比||的優先級高,但就像上面的題目,如果是&&的優先級高,那應該b與c的值會+1,然而并沒有。
查了baidu,問同學,最后總結如下:
&&與||是同級,看哪個在前就先算哪個。要說優先級,它們的優先級體現在結合上,即++b與++c結合起來做與運算&&,即(++a || (++b && ++c)),
進行運算時,從++a開始運算,a的值已經由0變為1,所以或運算||成立,后面的++b與++c不再執行。
關于這兩個運算符,還有一點要注意的是——
&&與||都有“短路”運算。
對于&&運算,則從左到右進行判斷,如果左邊為0,則右邊不再計算,整個&&運算就是0。
對于||運算,也是從左到右進行判斷,如果左邊為1,則右邊不再計算,整個||運算就是1。
所以我們在代碼編寫時要注意這一點,以防由于&&和||的短路運算,導致寫出來的代碼運算結果與預期的不同。
總結
以上是生活随笔為你收集整理的对C语言中与运算符与或运算符||的探讨的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab simulink欠驱动水面
- 下一篇: Unity Shader 屏幕抓取,屏幕