C语言中||和能同时出现在一条语句中吗?
生活随笔
收集整理的這篇文章主要介紹了
C语言中||和能同时出现在一条语句中吗?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
&&和||在同一條語句中會有問題嗎?
- 1、正文
- 1.1、問題
- 2、&&和||優先級與其他運算符優先級
- 3、0&&1和0||1等于啥?
- 4、詳解
- 4.1、舉例為啥不能
- 4.2、給a,b,c賦值
- 4.3、輸入a=1 ,b=2,c=3系統如何處理
- 4.4、輸入a=1 ,b=2,c=4系統如何處理
- 4.5、總結
1、正文
C語言中與和或同時寫在一條語句中會出現問題嗎?
答案是:會,而且很嚴重!
驗證為什么不能請花5分鐘細看
(凌晨了還在碼字,有些飄忽,如有錯誤歡迎指出)
1.1、問題
定義三個整形變量 int a,b,c,并對三個變量隨便賦值,若a,b,c都<=3且>=1,則輸出“通過”,若出現一個或多個不滿足則輸出“不通過”
2、&&和||優先級與其他運算符優先級
運算符優先級(從高到低列出)
| 運算符 | 描述 |
| . [] () | 字段訪問、數組下標、函數調用以及表達式分組 |
| ++ -- - ~ ! delete new typeof void | 一元運算符、返回數據類型、對象創建、未定義值 |
| * / % | 乘法、除法、取模 |
| + - + | 加法、減法、字符串連接 |
| << >> >>> | 移位 |
| < <= > >= instanceof | 小于、小于等于、大于、大于等于、instanceof |
| == != === !== | 等于、不等于、嚴格相等、非嚴格相等 |
| & | 按位與 |
| ^ | 按位異或 |
| | | 按位或 |
| && | 邏輯與 |
| || | 邏輯或 |
| ?: | 條件 |
| = oP= | 賦值、運算賦值 |
| , | 多重求值 |
3、0&&1和0||1等于啥?
舉個例子來驗證一下這些
0&&1=0
0 || 1=1
0&&0=0
1 || 1=1
1&&1=1
0 || 0=0
得出
0&&1=0 0||1=1 0&&0=0 1||1=1 1&&1=1 0||0=04、詳解
有了上面的鋪墊可以開始推導
問題:定義三個整形變量 int a,b,c,并對三個變量隨便賦值,若a,b,c都<=3且>=1,則輸出“通過!”,若出現一個或多個不滿足則輸出“不通過!”
最簡單可以把代碼可以寫為
4.1、舉例為啥不能
如下詳細介紹
4.2、給a,b,c賦值
給a,b,c賦1~3的值我們看到都是通過的!
給a,b,c賦大于3的值
為什么呢?我們在上面講過優先級和0&&1和0||1的舉例通過舉例可以得出
結論
主要看這條語句(主要討論的問題,一條語句中是否同時能出現||和&&)
if(a==1||a==2||a==3&&b==1||b==2||b==3&&c==1||c==2||c==3)4.3、輸入a=1 ,b=2,c=3系統如何處理
if(a==1||a==2||a==3&&b==1||b==2||b==3&&c==1||c==2||c==3) //這條語句是初始語句,把a,b,c帶入進去后 if(1||0||0&&0||1||0&&0||0||1) //根據優先級先算==(若等為1,反知為0) if(1||0||0||1||0||0||1) //&&的優先級大于||,所以根據上面得出0&&0=0 if(1||0||1||0||0||1) if(1||1||0||0||1) if(1||0||0||1) if(1||0||1) if(1||1) if(1) //根據之前驗證1||0=1,1||1=14.4、輸入a=1 ,b=2,c=4系統如何處理
if(a==1||a==2||a==3&&b==1||b==2||b==3&&c==1||c==2||c==3) //這條語句是初始語句 if(1==1||1==2||1==3&&b==2||b==2||b==2&&c==4||c==4||c==4) //把a=1,b=2,c=4帶入進去后 if(1||0||0&&0||1||0&&0||0||0) //根據優先級先算==(若等為1,反知為0) if(1||0||0||1||0||0||0) //&&的優先級大于||,所以根據上面得出0&&0=0 if(1||0||1||0||0||0) if(1||1||0||0||0) if(1||0||0||0) if(1||0||0) if(1||0) if(1) //根據之前驗證1||0=1,1||1=1輸入a=10 ,b=1,c=1系統如何處理
if(a==1||a==2||a==3&&b==1||b==2||b==3&&c==1||c==2||c==3) //這條語句是初始語句 if(10==1||10==2||10==3&&1==1||1==2||1==3&&c==1||1==2||1==3) //把a=10,b=1,c=1帶入進去 if(0||0||0&&1||0||0&&1||0||0) //根據優先級先算==(若等為1,反知為0) if(0||0||0||0||0||0||0) //根據之前驗算0&1=0 if(0) //0||0=0if(0)則為假,假則執行else
if(1)則為真,真則忽略else
4.5、總結
今天寫代碼出現了問題研究了好幾個小時,到處看資料也沒有想要的答案網上沒有人說過這個問題,不過我還是遇到了,雖然這種問題繞個彎多些幾條if else就可避免,不過還是提一下。
總結
以上是生活随笔為你收集整理的C语言中||和能同时出现在一条语句中吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人类dna信息量_DNA 里面到底可以写
- 下一篇: Arduino入门