已知int a 5,b 4,c 6,d,執行語句d ab ac a c b後,d的值為具體過程

2021-05-11 23:24:16 字數 5262 閱讀 2036

1樓:匿名使用者

6首先執行的肯定是括號裡的 a>c?a:c如果a大於c的話 結果為 a,

反之則為c, 所以結果是c

然後執行的是 a>b?c:b;

同上 所以結果為6

2樓:¤工藤星一

d的值為6

「條件?語句1:語句2」執行過程:

判斷條件是否正確,如果正確,則執行語句1,否專則執行語句2首先執行「屬a>c?a:c」,4<6,所以返回6則語句變成「d=a>b?

6:b;」

5>4,返回6

所以d的值為6

ps:「d=a>b?(a>c?a:c):b」的後面要加「;」

ps:你可以上機除錯

**:#include "stdio.h"

void main()

3樓:匿名使用者

a>c?a:c 這個結果是c

a>b?c:b 這個結果還是c

d=cd為六。

int a=5,b=4,c=6,d; printf("%d\n",d=a>b?a>c?a:c:

4樓:匿名使用者

printf("%d\n", d=a>b?a>c?a:c:b);這裡會輸出d的值

d=a>b?a>c?a:c:b 加上括號看,方便一些?:是一個運算子,所以加上括號為:

d=a>b?(a>c?a:c):b

這個運算先算a>b

a=5,b=4, a>b為真,所以,取(a>c?a:c)的結果給d賦值

a=5 c=6 a>c為假,所以,取c

因此,d=c=6 ;

5樓:匿名使用者

是少個括號,應該是你說的是對的

main() { int a=5,b=4,c=6,d; printf("%d\n",d=a>b?(a>c?a:c):(b)); }

6樓:匿名使用者

輸出6d=a>b?(a>c?a:c):(b));

首先判斷a>b,為真,所以輸出的是(a>c?a:c)

也就是判斷a>c,為假,所以輸出c,也就是6

7樓:黑色幽默

答案是6 關係到運算的優先順序 先判斷a是否大於b 因為5>4所以在運算a>c?a:c 5<6所以結果是6

c語言 若 int a=4,b=5,c=6,d=7,m=1,n=1,e; 則執行語句 e=(m=a>b)&&(n=c>d) ----問m、n的值分別為?

8樓:墨汁諾

(m=a>b)&&(n=c>d)當執行完m=a>b之後,返回的值是0,也就是false,就不去執行&&後面的表示式,只有m的值發生了改變n的值不變,所以是m=0.n=1。

**:#include "stdio.h"

void main()

9樓:刀無極啊

e=(m=a>b)&&(n=c>d),&&結合性從左往右,先計算(m=a>b),而》大於號的運算優先順序比賦值號=的優先順序高,先計算a>b的結果,a=4,b=5,所以a>b為假,結果為0,m=0,(m=a>b)的結果為0,襾&&邏輯與一旦發現表示式為假,整個表示式的結果就為假,後面的表示式不再計算,也就是說:表示式1&&表示式2,如果表示式1為假,整個邏輯表示式為假,不計算表示式2的值,所以m=e=0,而n的值沒有改變,為1

10樓:

&&執行一個判斷再執行下一個判斷,有一個是false就會停止。

m=a>b,m=0,所以就停止了,不會執行n=c>d

已知int i,a;執行語句「i=(a=2*3,a*5),a+6;」後,變數 i 的值是( ) a 6 b 12 c 30 d 36

11樓:多xdl點事

30。這裡考察的是c語言中運算子的優先順序,先執行括號的程式,然後執行逗號運算子,先執行a=2*3,再執行a*5,取右運算元,然後賦值給i,就是30。

**如下:

#include

int main()

程式執行結果:

擴充套件資料c語言中,逗號運算子確保運算元被順序地處理:先計算左邊的運算元,再計算右邊的運算元。右運算元的型別和值作為整個表示式的結果。

左運算元只是為了***需要而被計算,它其值會被丟棄。逗號運算子的優先順序是所有運算子中最低的。

12樓:匿名使用者

這個應該是選c。已經給你執行了,截圖了。你看看。

原因如下:先執行a=2*3,a=6,然後再a*5=30,注意此時有一個括號,說明前面這個逗號表示式的值為30.後面再接著一個逗號表示式。

因為賦值符號 =  的優先順序比逗號的高,所以直接把30賦值給了i。

如果把這題的括號去掉的話,結果就是6了。同樣根據優先順序的方法,i直接就等於a=2*3了。但是如果把題換成i=(a=2*3,a*5,a+6);後,答案就是12了。

根據逗號表示式的特點,就可以得出答案。

這題主要考優先順序關係。要學好c語言,這個一定要會哦。如果還不懂可以追問我哦。呵呵。逗號表示式的特點不知道的話可以去書上查下。

13樓:匿名使用者

選c 30,這個結果i=30,a=6。像這種並列逗號什麼的,賦值是取第一個的。

14樓:

30 c

首先a=2*3=6 然後a*5 =30i=30

我執行過程式了 沒錯的 ^ _ ^

15樓:卡卡斬

逗號表示式,括號裡從左到右,而且a的值是傳遞的。故為30

16樓:匿名使用者

12,因為,運算子是從左到右呀6+6=12

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語言環境中,設a=1,b=2,c=3,d=4,則表示式:a>b?a:c>d?a:d的結果為( )

20樓:lovefree隨風

表示式:a>b?a:c>d?a:d的結果為4。

解析:1、由於c語言的相同優先順序運算子運算規則為從左至右依次運算,而條件運算子具有右結合性,所以表示式:a>b?

a:c>d?a:

d優先運算c>d?a:d,得出的結果為4;

2、再運輸a>b?a:4,得出的結果為4。

所以最終得出的結果為4。

擴充套件資料表示式為:表示式1?表示式2:表示式3

先求解表示式1,

若其值為真(非0)則將表示式2的值作為整個表示式的取值,否則(表示式1的值為0)將表示式3的值作為整個表示式的取值。

例如:1、max=(a>b)?a:b,就是將a和b二者中較大的一個賦給max。

2、min=(a條件運算子具有右結合性

當一個表示式中出現多個條件運算子時,應該將位於最右邊的問號與離它最近的冒號配對,並按這一原則正確區分各條件運算子的運算物件。例如:

21樓:匿名使用者

結果是4,一會寫出過程

「?:" 這是一個三目運算子,以 「c>d?a:

d」這個**為例,程式會首先判斷「c>d」是否為真,若為真則執行冒號前的語句,即其結果為」a「的值;若為假,則執行冒號後的語句,即其值為"d"的值。

一般遇到這樣的題要拆分著做,首先判斷最左邊的「a>b」,這個結果為假,根據條件判斷運算子的性質,所以接下來執行第一個冒號後的語句「c>d?a:d」,接著判斷「c>d」,結果為假,所以最終取值為第二個冒號後的值,即為d的值,也就是4。

22樓:匿名使用者

答案為4,「a?b:c」是從右向左執行的,也就是說a為真的話,這個式子就可以看做b,否則可以看做c;c大於d麼,不是,則變成了a>b?

a:d,a大於b麼,不是,則為d,d=4.

23樓:匿名使用者

答案是4.三目運算子就可求得

#include 」stdio.h」 main() { int a=5, b=4, c=6, d; printf(」%d\n」, d=a>b? a>c?a:c :b); }

24樓:匿名使用者

d=a>b? a>c?a:c :b這個式子可解釋為d=(a>b?(a>c?a:c):b);

這裡的?:是一個三目運算子

a?b:c如果a為真,則返回b表示式的值,否則返回c表示式的值a>b為真,所以返回a>c?a:c

a>c為假,所以返回c的值,即6

設有inta1b2c3d4m2n2執行

這是邏輯運算,n的值為2 m a b 是賦值表示式,若a大於b則m得真,否則m得假回。答 a 1,b 2,a b 為假,故 m 假。賦值表示式 m a b 為假。m 0。在邏輯與 運算中,如果第一個運算元為假,則結果是假,後面的運算元不參與運算,本題中因為第一個運算元 m a b 為假,所以第二個運...

a 1,b 2,c 3,d 4,e 5 k ab?c de?d e kC語言題目,馬上要

表示式 條件e b c 如果條件e滿足,那麼這個表示式的結果是b,否則是ck a b?c d e?d e 這是巢狀的表示式 1.首先是 a b c d e?d e 2.由於a b為false,所以上面表示式的結果是 d e?d e 3.由於d e為false,所以結果為e 所以k 5 k e 5 運...

若a6,b4,c5,則表示式abcb

查手冊上的優先順序,5種運算 的優先順序哪個在前,優先順序高的先計算。除法回最高,所以先算2 c,因答為是整型,2 c的結果是0。其次是加法,b c結果為9。然後是 a b c,即6 9,即1。然後是 比 優先順序高 a b c b,即1 b,即1 這裡發生了邏輯短路,不需要知道b是多少就能算出表示...