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