幾個關於邏輯運算的c語言題目,幾個關於邏輯運算的C語言題目

2021-03-12 09:34:48 字數 3111 閱讀 3992

1樓:核蛋小子

哦,bai這個我知道,書上du和老師都會提到zhi這個問題的,在邏輯dao運算中會出現「短路」內的現象

容,例如「&&」並列語句當中如果第乙個為假的話就結果直接為零,不執行後面的運算;「||」或語句中如果第一為真結果直接為1,不執行後面的語句。這樣你就明白為什麼第一道題中的n不是0而是原來的值2,第二道題仲的y是3而不是4,第三道題仲的b是0而不是1啦

2樓:匿名使用者

5>6是假,所以&&的結果肯定是假,右邊的n=c>d就沒有運算了,所以n仍為2

同理++x=4,為真,所以||結果肯定是真,右邊的++y沒有運算

還是同理,++a=1>0為真,所以++b沒有運算,++c算了

3樓:匿名使用者

(m=a>b)&&(n=c>d) 結果該是0 因a不大於b m=就為假 後面的c++就不運算了

第二個是對的

++a 所以a=1

後面++b不執行

然後++c;

4樓:匿名使用者

應該沒錯,典型bai的短路du求值。

分析zhi

乙個吧:

(m=a>b)&&(n=c>d)

a > b false

m = a >b m = 0

(m = a>b) 整個表達dao

式結內果也容

是0因為左邊表示式結果為假,根據短路求值規則,右邊不用求解,所以n不變

結果是: 2

5樓:匿名使用者

(m = a > b)結果為0

(n = c > d)結果為1

(m = a > b) && (n = c > d)結果為1n = 2

6樓:匿名使用者

2樓的回答很好,給他加分

7樓:匿名使用者

你確定你給的答案沒有錯?

8樓:餘同書由君

||包括:1。&&邏輯與

2。||邏輯或

3。!邏輯非

對於使用邏輯運算子的表示式,返回0表示「假」,返回1表示「真」。關於邏輯運算子的解釋

請注意:任何使用兩個字元做符號的運算子,兩字元之間不應有空格,即將==寫成=

=是錯誤的。

假設乙個程式在同時滿足條件a<10和b==7時,必須執行某些操作。應使用關係運算子和邏輯運算子「與」來寫這個

條件的**。用&&表示「與」運算子,該條件**如下:

(a<10)

&&(b==7);

類似地,「或」是用於檢查兩個條件中是否有乙個為真的運算子。它由兩個連續的管道符號(||)表示。如果上例

改為:如果任一語句為真,則程式需執行某些操作,則條件**如下:

(a<10)

||(b==7);

第三個邏輯運算子「非」用乙個感嘆號(!)表示。這個運算子對表示式的真值取反。例如,如果變數s小於10,程式

程式需執行某些操作,則條件**如下:

(s<10)

或(!(s>=10))

//s不大於等於10

關係運算子和邏輯運算子的優先順序一般都低於算術運算子。例如,5>4+3的計算與5>(4+3)運算子是一樣的,即

先計算4+3,再執行關係運算。此表達示的結果為「假」,即,將返回0。

下面的語句

printf("%d",5>4+3);

將輸出0

可以總結為:&&的結果是真真為真。||的結果是假假為假。

關於c語言邏輯運算子一道簡單的題目!

9樓:夏碧夢

這是邏輯運算子的短路判斷造成的!

由於邏輯運算子||和&&實現判斷左值的,顯然如果根據左值就能夠判斷整個表示式真假的話,那剩下的就不用判斷了!目前的c編譯就是這樣處理的!

對於邏輯或||,左值為真,整個表示式就為真;

對於邏輯與&&,左值為假,整個表示式就為假!

++x||++y&&++z中先執行邏輯或||左邊的++x後x=1,左值為真,後面的自然就不用處理了!

10樓:匿名使用者

這個是c語言的優化造成的。

按照c語言對邏輯或運算優化計算的規定,當邏輯或的左運算分量滿足時,不再計算邏輯或的右運算分量,而直接得到邏輯或運算的結果。由於邏輯或的右運算分量不曾計算過,所以變數y,z的值也不為變化。

11樓:伊·梵

就是這樣算的

邏輯運算子從左至右還確保其運算元的計算。 但是,它們計算必要的運算元的最小數目確定表示式的結果。 這稱為 「短路計算」。

c語言兩個問題求解答,乙個邏輯運算,乙個陣列 第一題希望能詳細一點,網上的都看不懂

12樓:匿名使用者

第一題題目不全

第二題答案為0。

連續邏輯與,除最後乙個以外,前面均為真(非0),最後'b'就是98啊!

98-'b'當然是0。有0參與的邏輯與,結果當然為假,也就是0了最後不寫出答案了嗎?20 13 6

一開始陣列內容為

2 3 4

5 6 7

8 9 10

for的執行內容,翻譯一下就是陣列中每個元素,都跟本行的2號下標也就是最後乙個元素疊加,整個for執行完畢後i和j取值均為3,陣列內容如下:

6 7 812 13 1418 19 20下面的while:

第一次while:先判斷i的取值,i為3,大於0正確,執行迴圈體:

i--,i變成2;

輸出a[i][i]也就是a[2][2],也就是20.

第二次while:先判斷i的取值,i為2,大於0正確,執行迴圈體:

i--,i變成1;

輸出a[i][i]也就是a[1][1],也就是13.

第三次while:先判斷i的取值,i為1,大於0正確,執行迴圈體:

i--,i變成0;

輸出a[i][i]也就是a[0][0],也就是6.

然後再判斷while條件,0>0不成立,退出

C語言中的位邏輯運算子是怎麼取反的

計算機來裡面都是用補碼表示的 最高源位表示bai 符號位 0表示正數du,1表示負數 補碼轉換為原zhi碼 除符號位之dao外 各位取反末位 1 對於1 111111111111111111111111111101 32位系統int是32位的 除符號位之外按位取反末位 1 得到 1 00000000...

c 邏輯或有什麼問題,c 中邏輯運算子的問題。

是這樣的 1.或運算是只要有乙個條件滿足 則結果為true2.while語句括號裡面的表示式為true 則繼續迴圈按照你的意思應該是a n或者b m就跳出迴圈但你的表示式意思是 當a n或者b m則繼續執行 所以會出現要兩個都數對了才跳出迴圈 解決方法 1.像你說的那樣 換成與符號 2.整個表示式括...

關於c語言的幾個問題,關於C語言的幾個問題?

一 表示式1?表示式2 表示式 是乙個三目運算子,運算順序是先計算表示式1,若它的值為非0 真 將表示式2的值作為條件表示式的值 否則把表示式3的值作為條件表示式的值。你題目中 sign s i 1 1 的意思是若s i 等於 則sign 1,否則sign 1 二 這是建立結構指標的一種方法 漏了s...