日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言中||和能同时出现在一条语句中吗?

發布時間:2024/3/12 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

#include<stdio.h> int main() { int a; a=(0&&1); printf("0&&1=%d\n",a); a=(0||1); printf("0||1=%d\n",a); a=(0&&0); printf("0&&0=%d\n",a); a=(1||1); printf("1||1=%d\n",a); a=(1&&1); printf("1&&1=%d\n",a); a=(0||0); printf("0||0=%d\n",a); return 0; }

得出

0&&1=0 0||1=1 0&&0=0 1||1=1 1&&1=1 0||0=0

4、詳解

有了上面的鋪墊可以開始推導
問題:定義三個整形變量 int a,b,c,并對三個變量隨便賦值,若a,b,c都<=3且>=1,則輸出“通過!”,若出現一個或多個不滿足則輸出“不通過!”
最簡單可以把代碼可以寫為

#include<stdio.h> int main() { int a,b,c; scanf("%d%d%d",&a,&b,&c); if(a==1||a==2||a==3&&b==1||b==2||b==3&&c==1||c==2||c==3) printf("通過!\n"); else printf("沒通過!\n"); return 0; }

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=1

4.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=0

if(0)則為假,假則執行else
if(1)則為真,真則忽略else

4.5、總結

今天寫代碼出現了問題研究了好幾個小時,到處看資料也沒有想要的答案網上沒有人說過這個問題,不過我還是遇到了,雖然這種問題繞個彎多些幾條if else就可避免,不過還是提一下。

總結

以上是生活随笔為你收集整理的C语言中||和能同时出现在一条语句中吗?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。