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

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

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)

正規表示式ddsw0,正規表示式 d d s w 0 9 d d s w 這兩個的區別是什麼呢?

亂紅齋 一個匹配有符號數,另一個匹配有符號數或無符號數。正規表示式,又稱規則表示式,是電腦科學的一個概念,這個概念最初是由unix中的工具軟體普及開的。正則表通常被用來檢索 替換那些符合某個模式 規則 的文字。正則引擎主要分為dfa nfa兩大類。許多程式設計語言都支援利用正規表示式進行字串操作。在...

C語言中,若有int a 5則逗號表示式a 2 6,a 3,a 5的值是

風雷九州 沒錯,就是12。號優先順序高於,號表示式,要計算 賦值 直接就是a 2 6 12了,後面那些a 3,a 5什麼的都沒用 我認為是17,因為這是一個逗號表示式,裡面有2個逗號,3個式子!逗號表示式的值,以最後一個式子的值為值,也就是a 5。但是他是從前往後依次做算的,運算第一個式子後,a是1...

若有定義 int a則表示式a a的值為9請高手說明下這個過程

倒黴熊 二維陣列是按行儲存的也就是如下這樣 a 0 0 a 0 1 a 0 2 a 0 3 a 1 0 a 1 1 a 1 2 a 1 3 a 2 0 a 2 1 a 2 2 a 2 3 而a表示的就是a 0 0 所在的地址。所以 a 2 1 a的值為9。 陽光上的橋 請你在草稿紙上畫一個三行 四列...