設int a 5,b 4則表示式(a ba b 的值是5,該做如何解釋?麻煩高手解釋一下!謝謝啦

2022-10-30 09:10:41 字數 3834 閱讀 8867

1樓:匿名使用者

這個表示式先判斷(a=b++)這個邏輯式是否成立,在執行該判斷時a=5,b=4,故該邏輯式輸出0,同時該邏輯式執行b++,故b=5.因為邏輯式輸出0,故執行冒號後一條語句,在執行語句過程中b=5,執行完之後b=6,也就是說b++語句在邏輯式和輸出過程中被分別執行了一次,而輸出地是執行語句過程中的值,因此是5.

假如a=5,b=5,那麼輸出結果是6,它執行了++a這條語句。

2樓:

首先定義整型變數,在表示式中進行判斷,若a=b++成立,進行++a運算。若不成立,進行b++運算。該題目中的表示式不成立。所以進行b++運算,答案是5。

題目中的只是點就是對++的運算優先順序考察,b++的通俗解釋為先拿b的值代入表示式的中,然後進行自身加1運算,希望你以後多看書,c語言剛入門的童鞋一定對知識點掌握牢固,方可熟練運用。

3樓:匿名使用者

條件? 結果1 : 結果2

問號運算子,如果條件為真,計算結果1,否則計算結果2。

條件a=b++ 先做賦值運算,a=4;再做邏輯運算,if (a為真) 。a>0,故a為真是正確的,所以計算結果1。++a的值就是5了。

注:樓上兩位不要亂來,這是賦值的=,不是==。

4樓:匿名使用者

(a=b++)? ++a:b++

先計算括號裡的,把b賦給a後b+1,所以a=4,條件判斷為真,計算++a, 計算完後a=5

設int a=5,b=6,表示式(++a==b--)?++a:b--的值是 5還是6?理由 30

5樓:目冊星空元

最後值為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操作後,

結果為 7

6樓:聽不清啊

6==6,(然後a=6,b=5)所以執行++a

整個表示式的值是7。

設int a=5,b=6,表示式(++a==b--)?++a:--b的值是

7樓:匿名使用者

結果為bai7。

條件表示式

du為:表

zhi達式1?表示式2:表示式3。先求解dao表示式內1,若其值為真(非容0)則將表示式2的值作為整個表示式的取值,否則(表示式1的值為0)將表示式3的值作為整個表示式的取值。

先判斷++a==b--是否為真,++a表達的值為6,b--表達的值為6,兩者相等,為真。則將表示式++a的值作為整個表示式的取值,因為在此之前a的值已經自增變成6,再進行++a表示式的值為7。

8樓:匿名使用者

最後值為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操作後,

結果為 7

9樓:烏石

7,條件表示式條件為真,取值為++a;原來為6,執行++a後為7

設變數定義為int a=5 ,b=6,則表示式(++a==b--)?++a:--b的值是()

10樓:閩人訾新蕾

最後值為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

11樓:紅石頭

表示式(++a==b--)?++a:--b意思是++a==b--為真時,表示式值為++a;++a==b--為假時,表示式值為--b。所以表示式的值為7

設int a=4,b=6.表示式(a=b++)? --a:b++的值是多少

12樓:碧海風雲

(a=b++)?--a:b++值為5。以下是分析過程a=b++,將b的值賦予a後b+1(b++為先引用後運算)。此時a被賦值6,b被賦值7

(a=b++)?,相當於if(a),a的值為6,所以為真。

判斷為真時,將--a賦值給a,即a-1後賦值給a(--a為先運算後引用)。此時a被賦值5。

設int 型變數a=3,b=4,c=5,則表示式((a+b)>c)&&(b==c)&&a||b+c&&b+c的值是。 要詳解。

13樓:匿名使用者

結果是1

邏輯運算子&&和||要比算術運算子低,

所以要先算加減號

邏輯&&的優先順序高於||

b+c&&b+c就是1

所以整個表示式是1

14樓:瓦里安x代

結果應該為9

b==c為假 不再判斷a

預設a為假,繼續判斷b+c

b+c=9

已知int a=5,b=5; 則表示式: ++a>b?a:b-->++a?++b:a的值為6。

15樓:

先看一下這些運算子號的優先順序

那麼按照優先順序進行運算的話,正確的運算順序應該是(++a>b)?a:(b-->++a?

++b:a)++a=6 ,a=6,b=5 所以 ++a>b為真三目運算子是從右往左進行運算的,但是由於條件不滿足所以並不會執行(b-->++a?++b:

a)所以最後表示式的值為 6

16樓:古幡比奈子

最後值為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操作後,

結果為 7

17樓:匿名使用者

n的值仍然為2,沒有改變!

過程:先計算a>b,值為0,賦給m的值為0,表示式m=a>b的值也是0。

對於&&邏輯運算,不管後面(n=c>d)的值如何,都不影響(m=a>b)&&(n=c>d)的最終結果,因此,c語言不再對表示式n=c>d進行計算。因而n的值沒有改變!!

18樓:迪卡普里奧朱

這是一個三元巢狀的問題,必須考慮把它轉換成等價的if else語句。我不是很懂c,但原理是相同的。

等價的if else應該是這樣的。

if(++a>b)elseelse

}所以最後 a=6,是因為後面壓根就沒有執行。

設a 1,b 2,c 3,d 4,則表示式 ab a cd a d在c語言裡怎麼編寫

if a return a else if c return a else return d if a else return d 或者 a c語言中設a 4,b 3,c 2,d 1則表示式 a 結果是1 首先判斷條件a b,如果成立則取a的值,不成立則取 c d?a d 的值 對於c d?a d,...

若已定義 int a 2,b 2則表示式 a b

4,3b 的意思是先bai用後加 也就是 du2 2 b 這裡的 zhi2 要先用值,dao也就2,用過之後再加專1 那麼就變成 屬了 2 2,b 這是後面的b 就應經被用過了 就要加1.就變成了 2 1 3 所以值是4,3 35.若有定義 int a,b 則表示式 a 2,b 5,a 2,b a ...

已知inta 1,b 2表示式 a b a b 2 4的值,表示式 a b 的值 求詳細

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