1樓:匿名使用者
||是邏輯表示式的「或」
而右邊,b=c,其中的「=」是賦值符號,而不是邏輯判斷符號,如果需要判斷b是否等於c的話,請使用「==」符號。
擴充套件知識:
c語言處理邏輯的有以下幾種符號:
與:&&
或:||
非:!恒等:==
大於:>
小於:<
不等於:!=
大於等於:>=
小於等於: <=
2樓:
這存在||和|,以及&&和&在效率上的區別。
||和&&在一旦左表示式能確定整個表示式的值時,就不會執行右表示式,而|和&無論左表示式值如何,都會執行右表示式。
所以,c、a = 2 為真,所以整個表示式的值必定為真,所以右表示式則被跳過,所以b的值並沒改變,還是為3.
3樓:匿名使用者
這個是||的條件,當||的左邊為真值的時候右邊的表示式不執行,所以b還是等於3
因此答案是b,別的都不正確。
4樓:匿名使用者
如果答案不對的話,只有下述可能:
或條件語句在執行的時候,先測試左側,左側為真,直接返回真,如果左側為假,再執行並測試右側結果。
5樓:匿名使用者
那是乙個=,不是兩個==,不是判斷b與c是不是相等,而是把c的值賦值到b裡
6樓:匿名使用者
同意上面的說法,由於在執行或的時候當第乙個條件成立就不在執行第二個條件,所以b就不會等於0了
7樓:冉夢菲
a||(b=c)是個條件語句,用作判斷用的,這個並不會改變b的值,b應該還是為3才對吧
8樓:匿名使用者
這個是||的條件,當||的左邊為真值是右邊不執行,所以b還是=3
9樓:匿名使用者
a、a&&b>c 前面a為真,b>c也不為真,所以a&&b>c為真,這個不用解析了吧? 答案a是錯的
b、首先!a=0,這個知道吧?(b!
=c)這個表示式為真吧?所以為1,從而有0!=1 這個表示式也為真正啊。
所以說這個表示式的值為1,還有疑問嗎? ,所以答案b是正確的
c、a||(b=c),是個條件語句,中間是「||」,由於前面表示式a為真,所以不會去執行後面的表示式。
d、a>b!=c的執行順序是,(a>b)!=c,根據運算子的優先順序,先算括號裡面的,所以與a>(b!=c)的順序是不一樣的
每個答案都給你解析了,望採納!
10樓:w天使de翅膀
b=c 這句話是錯誤的,這句話的意思是將b的值賦給a,b==c才是判斷b和c是否相等
11樓:匿名使用者
(b=c) 這個表示式是0因為c的值賦予了b
a||0 這個表示式值為1
非零 或 0 值等於1
12樓:匿名使用者
||當左邊為真時,右邊不執行
c語言題: 已知a=b=c=0;則++a||++b&&c++的值為?正確答案:1,0,0,1 要過程, 謝謝
13樓:匿名使用者
邏輯運算子並不是運算子兩邊的表示式一定都執行,就本例來說:
a = b = c = 0;
d = ++a||++b&&c++;
1、&&的優先順序比||高,注意優先順序是「結合優先順序」而不是「計算優先順序」。所以整個表示式可以看做++a||(++b&&c++)
2、對於乙個||邏輯或來說,只要||左邊的表示式為假(即0)才執行||右邊的表示式(即本例中的++b&&c++),如果||左邊表示式已經為真,那麼會造成所謂的「短路」即||右邊的表示式不再執行
3、由於++a是先++再賦值,則a=1,由於||左邊表示式已經為真(非零),則短路,右邊表示式不執行
4、按上面描述,答案a = 1, b = 0, c = 0, d = 1
總結,&&運算子,除非該操作符左表示式為真,才執行右表示式,否則直接為假
||運算子,除非該操作符左表示式為假,才執行右表示式,否則直接為真
14樓:sr開得比板慢
a++ a=1
因為a=1 所以 | |後面的都忽略了..所以b=0, c=0而且整個式子的值是1
還不懂的話可以追問
15樓:憂傷海域
||c=0;
b=c;
a=b;
c=c++(c=0)用過後為c=1;
b=++b(b=1)用過後為b=0;
++b&&c++=0(1&&0為假值為0)a=++a(a=1)用過後為a=0;
0||0為真值為1.
表示式值為1,a=0,b=0,c=1.
16樓:石化終結者
thangkfasd fasdf
c語言中有一道題目:已知"int a=4,b=5,c;",則執行表示式"c=a=a>b後變數a的值為( ) a 0 b 1 c 4 d 5
17樓:匿名使用者
這個涉及到c語言的單目運算子優先順序與結合性的知識:
62616964757a686964616fe59b9ee7ad9431333330356165
優先順序:
在表示式中,優先順序較高的先於優先順序較低的進行運算。而在乙個運算量兩側的運算子優先順序相同時,則按運算子的結合性所規定的結合方向處理。
結合性:
c語言中各運算子的結合性分為兩種,即左結合性(自左至右)和右結合性(自右至左)。例如算術運算子的結合性是自左至右,即先左後右。如有表示式x-y+z 則y 應先與「-」號結合,執行x-y 運算,然後再執行+z 的運算。
這種自左至右的結合 方向就稱為「左結合性」。而自右至左的結合方向稱為「右結合性」。
在你的問題中,"="在表示式中是賦值運算子,而在c語言中,賦值運算子是典型的右結合性運算子。如x=y=z,由於「=」的右結合性,應先執行y=z 再執行x=(y=z)運算。
所以,本例就是先計算雙目運算子「>」:a>b,因為a=4,b=5,a是小於b的,所以式子計算就變成了c = a = 0,然後再計算a = 0(即a = (a > b)),最後式子就是c = 0, 所以答案選a
具體運算子優先順序和結核性請參考:
18樓:0冷雨
答案是a;因為a=a>b意思為把波爾值a>b賦值給a,因為a大於b,a>b等於0,所以a為0.望採納~
19樓:匿名使用者
a, a=0
= 是由du右向zhi左運算的,
a>b值為daofalse,值為0
所以c=a=0
另外也可以專寫程式屬驗證:
#include
int main(void)
大學c語言問題 執行「int a,b,c;a=b=c=1;--b&&++c||++a;"後,變數a
20樓:我才是淡淡
|,首先你要把整個結構弄清楚,&&的優先順序高於||,所以上面的式子等價於(--b&&++c)||(++a),
先看(--b&&++c),--b導致b的值為0,所以(--b&&++c)必然為假,所以c就不會加一了,c的值還是1。然後(--b&&++c)為假並不能直接斷定(--b&&++c)||(++a)的真假,因為||需要兩邊為假才是假,所以需要判斷右邊的(++a),這裡a自加一次變為2,(++a)為真,整個表示式(--b&&++c)||(++a)的值為真。最後a,b,c的值分別是2,0,1
21樓:
你的**是順序結構;
所以執行的時候是先對a進行賦值,也就是a=1;
至於後面對b和c的運算,並不能改變a的值。
第一步 int a,b,c;
第二步 a=b=c=1;
第三步 --b&&++c||++a;//這個地方只有++a能改變啊的值 b和c對a的值不影響
第四步輸出a的值;
22樓:益達是誰
這判斷式a,b,c應該是2-0-2啊,怎麼是201,還有我想問這式子對嗎
23樓:匿名使用者
答案應該是2 1 1
c語言程式設計題: 執行下列程式段後,a值為() a=1;b=0; if((a++>++b)?a
24樓:
很簡單,看一下吧
a++是先使用a(來比較)再賦值,而++b正好相當,是先賦值給b再進行比較
a=1;
b=0;
然後if(a++>++b)的結果是if(1>1)即if(0),注:這裡0表示假,原因如上所述,而比較完之後肯定是a=2; b=1;
然後再因為if(0)執行b--,即b=0;
後面估計你也會明白了,a+=b;即為a=a+b;
a=2+0=2
25樓:匿名使用者
++在後變數先參與運算,運算後加1,++在前先自增1,再參與運算。
c語言中。int a=1,b=0,c=1; 執行語句 !b||++a&&++c 後,a,b,c
26樓:
或運算,而且是左結合,!b為真,整個表示式就為真了,不再繼續運算,也就是++a和++c沒有運算,表示式的結果就出來了。
27樓:匿名使用者
|後首先根據運算子優先順序和結合性。((!
b))||((++a)&&(++c))
然後先算!b,此時(!b)=1,為true,於是不需要專算||後的內容了。屬
因為:true||任意表示式=true。
注意,運算子優先順序不代表計算優先順序。
如果你把b=1 結果就是212
28樓:卿楓凌
對於!b||++a&&++c;按照規bai
定, 要先計du算 && (&&的優先順序zhi比||高)也就是需要計算dao出 ++b和c++;
但是按專照優化, 只要計算出 a>0 就可屬以了,不需要計算出 ++b和c++,「||」在這裡起到了短路的功能(短路就是,當第一條表示式能決定整條表示式的結果,那麼後面的語句都不執行!),這也叫做布林法則,給你推薦一本書叫做「c語言解惑」。望採納
c語言:設abcd均為0執行(m=a==b)&&(n=c!=d)後 m n的值為
29樓:匿名使用者
執行 (m=a=b)&&(n=c!=d)
先判斷&&是左結合,算左括號,然後=(賦值)優先順序低,先算a=b得到真賦值給m,m為1,然後整個括號內表示式為1;因為1 and 任意值 都為真!因此繼續看右邊,c!=d為假,所以n=0
如果是左括號值為假,則如果右邊的n的值就為不確定!因為0&&任何值都為假
有不對的請指教!
30樓:扛菸頭的大槍
首先來說說運算等級:()運算等級最高,==與!=的運算等級比=高,所以在(m=a==b)中,先執行a==b,結果為真,返回1,m=1;&&左邊的式子返回值為真,故(n=c!
=d)可以繼續進行,同理,c!=d結果為假,返回值為0,n=0.
總的結果是m=1,n=0
31樓:匿名使用者
(m=1)&&(n=0)結果為0
C語言關於邏輯值的問題有加分,c語言中,關係表示式和邏輯表示式的值是什麼?
首先對你的苦惱表示理解和同情。一句話,二值世界中只有0和非0兩個概念,如何再有1?1的引入只是編譯器實現和人類的習慣。c語言標準規定 0為假,非0為真 這是毫無疑問的。但是 非0 並不是一個具體的值,大多編譯器都把 非0 實現為1,照顧人類習慣,但引起了很多誤會。第一題 a毫無疑問 第二題 k k是...
c語言的傳值與傳指標的問題,大一c語言題目,形參實參與指標的問題
星月小木木 c語言中指標即位址,位址的傳值可以引起引數的變化。比如 x,y是取這兩個變數的位址,作用空間在main函式裡。然後函式呼叫把這兩個變數的位址傳遞到函式myadd中,在函式中的 a和 b分別是引用位址指向的變數值,等於是取到了x,y本身的值。在myadd中直接操作 a可以改變x的值。通俗來...
程式執行後的輸出結果是,c語言,以下程式執行後的輸出結果是
32768正確 乙個整型變數只能容納 32768 32767範圍內的數,無法表示大於32767的數。遇此情況就發生溢位,但執行時並不報錯。數值達到最大值時後,從最小值計數,所以32768 32767 1,在c裡就又回到 32768了 把int b 改成long b b ld 再試試看 根據編譯器的不...