假定int a 0,b 1,表示式a

時間 2021-08-16 11:06:24

1樓:節俊智雲旋

最後值為7,這是一個if語句,就是

inta=5,b=6;

if(++a==b--)

++a;

else

--b;

++ar的規則是先運算,所以括號中左值++a=6,a=6;

==的優先順序低過--,所以先計算b--

b--的規則是先賦值,所以括號中右值b--=6,b=5;

左值6==右值6,即條件為真,執行++a,因為a值已是6,所以加1操作後,

結果為7

2樓:汲廣英武巳

49運算a=『0』賦值,得到a=48,

運算邏輯非,前面是0,後面b--就不運算了,這個是&&的特性。所以b=1

最後a+b=48+1=49

這個是逗號運算子,得到的是最後一個逗號後面的表示式的值,也就是49

3樓:班汀蘭榮子

答案是48

表示式1,表示式2

返回的值是表示式2的值,計算過表示式1,a的值被賦值成'0'也就是48,b的值是0,相加得到48

所以返回48

4樓:綦問凝倫雲

「!(a=『0』)&&b--」

分步解答:

第一步:a='0',

'0'是字元,其對應的acsii碼值是48,則賦值後a的值是48。

第二步:b--

,b先運算,再執行自減運算,所以,執行

&&運算是b是

1,執行後

b的值是0;

第三步:a+

b即是48+

0=48且這是一個逗號表示式,其值為表示式2

的值,故

答案:48

5樓:波暢鄲嫚

結果變數a值為48,b值為1,表示式!(a='0')&&b--,a+b值為49

!(a='0')&&b--,a+b

根據運算子優先順序,結合性,即

(!(a='0'))

&&(b--)

,a+b

由於逗號運算子和&&運算子的求值順序定義為自左向右,逗號表示式的值由最某項決定

故這個表示式的值必為a+b

由於&&運算子的短路效應

!(a='0')值為0,且a值為字元『0』的ascii碼值48所以b--未執行,即b值仍為1

因此48+1=49

6樓:捷遠扈珍

從優先順序開始算起,()>

-->!

>&&(a=『0』用的ascii碼錶查的)

a=48

b--b=0

表單式的值為0,

a+b=48

假定int a=3,b=2,c=0表示式c=a>b>1&&(a++==1+b++),a+b+c的值是?

7樓:夕婕官以

因為a>b為真所以a>b=1,而1不可能大於1,所以a>b>1為假,所以a>b>1=0,導致&&後的語句不執行,所以c=0,a=3,b=2,所以a+b+c=5

8樓:黎哲妍多名

a+b+c的值是5。

因為a>b為假,值為0

0>1的值也是0。

所以後面的&&(a++==1+b++)不執行。

c的值就是0,a和b的值未變,所以,a+b+c的值是5。

設 int a=0,b=1;表示式(!a||++b)後b的值是什麼

9樓:匿名使用者

優先順序問題

!的優先順序最高,其次++,最後才||

又因為!a==1 ,||在c語言中,只要||前面的值為1,就不再執行||後面的

所以它不會執行++b b因此沒有增值,還是原來的值,b=1

10樓:匿名使用者

短路求值問題,||的結合性是從左到右的,因此會先計算!a的值,由於a==0,所以!a不等於0,因此不必再計算後面的++b了,因為到此整個表示式的結果已經可以確定了,所以b值沒有改變,還是1.

請到以下頁面檢視短路求值的詳細解釋

11樓:悲劇故土

b=1;

具體操作是#include

#include

int main()

然後輸出是1 1 0;

至於為什麼呢,是因為在c中,對於||或運算子來說,如果它前面一個表示式為真的話,它就不會執行後一個語句,從而直接判斷這個表示式是真!!

因為表示式(!a||++b)中!a為真,所以++b這個語句沒有執行,這個問題經常會被忽略,建議看看《c語言解惑》這本書,對你有很大的好處!

12樓:叔淑蘭本乙

這個問題涉及運算子優先順序的問題。

首先,.++(自增)運算子的優先順序要高於||(邏輯或),所以要先進性自增(++)運算,也就是++a,此時a=1,

然後輪到||運算子了,邏輯或是雙目運算子,它的規則是如果第一個運算元是非0,那麼整個的運算結果就是真(非0),也就是不會進行第二個運算元的運算,即++b是不會參與運算的,此時b還是5.

然後再執行,a+b,基於上面兩步,那麼a+b=1+5=6over,希望你明白了。

已知inta=1,b=2;表示式!(a+b)-a&&b+2×4的值,表示式!(a-b)的值?求詳細

13樓:金色潛鳥

!(a+b)- a && b+2*4 按運算子優來

先律和結合律,可寫為自

:(!(a+b)- a) && (b+2*4)

由於 int a=1,b=2; 所以bai !(a+b) = !(1+2) = !3 = 0. 0-a= -1 ( 非0 為真du)。

(b+2*4) = 2+8 = 10 也為真。 && 是與運算zhi,真真dao得真。

printf("%d\n",(!(a+b)-a && b+2*4)); 輸出 1。

後面問的 !(a-b) = ! (-1) = 0; 因為 非0的值都是真,-1 不是0 ,所以 -1 也是真。

真求反,得非,非就是 0。 printf("%d\n", !(a-b)); 輸出0。

c語言 假定int a=3,b=2 c=1 表示式(c==a>c)+(a/b/2.0)的值是多少

14樓:匿名使用者

分析:首先(c==a>c):右結合。因為c=1,a=3,因此,a>c返回1,c==1返回1

然後,a/b/2.0,左結合。a/b,結果商為1,1/2.0的結果是0.5,1+0.5=1.5

最終結果1.5

15樓:匿名使用者

可以寫程式執行一下

#include"stdio.h"

main()

執行一下是1.500000

c語言中有一道題目:已知"int a=4,b=5,c;",則執行表示式"c=a=a>b後變數a的值為( ) a 0 b 1 c 4 d 5

16樓:匿名使用者

這個涉及到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

具體運算子優先順序和結核性請參考:

17樓:0冷雨

答案是a;因為a=a>b意思為把波爾值a>b賦值給a,因為a大於b,a>b等於0,所以a為0.望採納~

18樓:匿名使用者

a, a=0

= 是由du右向zhi左運算的,

a>b值為daofalse,值為0

所以c=a=0

另外也可以專寫程式屬驗證:

#include

int main(void)

設int a 0,b 1,c 2,則表示式a a b a c的值是

為2x 表示式1?表示式2 表示式3 其意義是 先求解表示式1,若為非0 真 則求解表示式2,將表示式2的值賦給x。若表示式1的值為0 假 則求解表示式3,將表示式3的值賦給x。因為a 0 為假 求表示式3的值 為2 結果為2 a?a b a c 表示的是a是否為真,如果為真,結果就是a b,否則為...

設int a 5,b 6,表示式a ba b 的值是5還是6?理由

目冊星空元 最後值為7,這是一個if語句,就是 int a 5,b 6 if a b a else b ar的規則是先運算,所以括號中左值 a 6,a 6 的優先順序低過 所以先計算b b 的規則是先賦值,所以括號中右值b 6,b 5 左值6 右值6,即條件為真,執行 a,因為a值已是6,所以加1操...

若已定義int a,則表示式a 10,a 10,a 的值為

答案為10。解題過程如下 a 10,a 10,a 是一個逗號表示式,逗號表示式的規則是什麼第一表示式計算起,直到計算最後一個表示式,最後一個表示式的值是逗號表示式的值。先計算a 10,值等於10,變數a也被賦10的值。再計算a 10,的值為20.最後計算a 得值為10,a得值為11.但整個表示式的值...