關於c 中邏輯與和邏輯或的問題

時間 2021-08-14 08:56:47

1樓:匿名使用者

lz 我在 vs 2008 用如下**做了測試

#include

int main()

顯示為016

7 也就是隻有 a 遞增了,b c 不變。我覺得這樣才符合我所學的解釋。

對於 a++&&b++&&c++ 這個表示式,

首先從運算子優先順序(precedence)分析為:

(a++)&&(b++)&&(c++) 即,所有 後置遞增『++』應該先運算。

然後 從 && 的集合性(associativity)分析

((a++)&&(b++))&&(c++) 即,從左到右先計算左邊的『&&』,即 (a++)&&(b++)

最後,也是最關鍵的一個步驟就是 c++ 標準對 && || 兩個運算子有特殊的規定:

短路求值(short-circuit evaluation) —— 簡單的說,有表示式 a&&b 其中 a,b 分別是兩個表示式,編譯器會先計算左邊的 a 的值,如果a 的值為 0,則不管 b 的值最後是多少都不影響 a&&b 的結果了(a&&b 的結果已經提前由 a 決定了為 0 對不?),那麼編譯器就不再對 b 求值了,a&&b 只計算了 a 就直接返回為 0了。

所以這裡 ((a++)&&(b++))&&(c++),由於第一個 && 的左邊 a++ 返回 0,所以 b++ 被略過,以此類推 c++ 也應該被略過

這樣最終 只有 a++ 被求值,b++ c++ 被忽略,a++&&b++&&c++返回0

2樓:匿名使用者

首先第一個與運算

與運算必須是所有都為真 此式子的值才為真,首先系統先判斷第一個值,a 因為a的值為0,所以系統不需要再判斷後面的是否為真 也就不需要再執行後面的b++,c++,所以就只執行了以個a++,所以a的值為1,b,c的值不變

而或運算是所有值為假,式子才為假,當系統判斷第一個a的值為假時,執行a++,a的值為1,然後系統再判斷b的值,這時b為真,執行b++,b的值為7,應為b為真 這個式子的值已經為真了,所以系統不需要再判斷後面的語句,也就不執行c++,所以c不變

3樓:匿名使用者

a++&&b++&&c++中,從左到右計算,先計算a++,(a++)==0,在邏輯與中,當從左到右計算到某一陣列已經是false(或0)了,編譯器就不會計算後面的了(因為再計算下去對這式子已經沒意義了,式子已經是false(或0)了),然後就沒計算b和c...注:(a++)的這句的值為0(因為之前a==0),但a在參與完計算後才自增1,你要換成是++a就不同了;

a++||b++||c++中,一個為false(或0)無法對語句產生必然結果,所以編譯器需要將a.b.c計算完才能得出式子結果,就自然把a.

b.c全計算了(即全部自增1),但對編譯器來說這個式子就是計算0||6||7是否為真,然後才將a.b.

c自增1...

4樓:

突然懂了,謝謝您了。

5樓:匿名使用者

你搜一下「猝死法」就知道了。

請幫我詳細講解下c++中的邏輯運算子&&和||

6樓:

我用我的理解給你解釋把·

&&是邏輯與 &&左右的數都為1那麼值就是1 有一個數為0值為0

||是邏輯或 ||左右有一個數是1 值就為1 全是0值才為0

1(真) 0(假) 我自己用於理解記憶·..

c++中,表示邏輯或的符號怎麼輸入?

7樓:匿名使用者

&&(shift+7按兩次)

是邏輯與

||(shift+\按兩次)

是邏輯或

&是位與(shift+7)

|是位或(shift+\)

注:\是「回車」上面的鍵

8樓:匿名使用者

邏輯或是由兩個豎線構成,其輸入的方式為兩次同時按下shift+反斜扛。

注意:不同鍵盤可能反斜扛位置不同。

9樓:匿名使用者

邏輯非 !

邏輯與 &&

邏輯或 ||

10樓:匿名使用者

|,回車鍵上面那個鍵

什麼是邏輯與非或,計算機算數和,邏輯與,邏輯或,邏輯非分別是什麼意思

永丶不悔頭 1 邏輯與 相當於生活中說的 並且 就是兩個條件都同時成立的情況下 邏輯與 的運算結果才為 真 數學用 表示 與 2 邏輯或 相當於生活中的 或者 當兩個條件中有任一個條件滿足,邏輯或 的運算結果就為 真 數學用 表示 或 3 邏輯非 就是指本來值的反值。 邏輯非 邏輯與 邏輯或 是三種...

C中(位或)和邏輯或)有什麼區別

逍遙墮仙 位或是算術運算子.邏輯或是邏輯比較符.兩者不一樣的.比如 9 5 00001001 0000010100001101 十進位制為13 可見9 5 139 5 應該是true 兩者結果也不一樣的. 咱不談什麼位或 位運算之類的.只是在最基本的應用上告訴你這2個有所區別的小技巧.位或運算的時候...

c語言中邏輯或的豎線怎麼打啊,C語言中邏輯或的 豎線怎麼打啊

千鋒教育 同時按鍵盤上的這兩個鍵 c語言適用範圍大 適合於多種作業系統,如windows linux dos unix等等 也適用於多種機型。c語言對編寫需要硬體進行操作的場合,優於其它高階語言,有一些大型應用軟體也是用c語言編寫的。 塵世間的菜鳥 shift鍵加 這個鍵,平時就是 的這個,就可以打...