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...