c語言問題 ab c 執行後b的值為0 這句話怎麼錯了

時間 2021-12-22 19:32:11

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 再試試看 根據編譯器的不...