int a 3,b 2,c 1 c 5 abprintfd n ,c 輸出為什麼是3啊?求大神指點

時間 2021-08-30 10:38:34

1樓:

因為c=5永遠是“真”,所以執行?後的a++。而a++是後++,要把a的值3賦給c後a才變為4。

2樓:單屏安

c=5這個條件為假,應該執行b--,得b=1,但是最後輸出為c,c不變,應該是c=1

3樓:飛向夢想飛向未來

c語言提供一種特殊的運算子——逗號運算子。用它將兩個表示式連線起來。如:

3+5,6+8

稱為逗號表示式,又稱為“順序求值運算子”。逗號表示式的一般形式為表示式1,表示式2

逗號表示式的求解過程是:先求解表示式1,再求解表示式2。整個逗號表示式的值是表示式2的值。例如,上面的逗號表示式“3+5,6+8”的值為14。又如,逗號表示式

a=3*5,a*4

對此表示式的求解,讀者可能會有兩種不同的理解:一種認為“3*5,a*4” 是一個逗號表示式,先求出此逗號表示式的值, 如果a的原值為3,則逗號表示式的值為12,將12賦給a, 因此最後a的值為12。另一種認為:

“a=3*5”是一個賦值表示式”,“a*4”是另一個表示式,二者用逗號相連,構成一個逗號表示式。這兩者哪一個對呢?賦值運算子的優先順序別高於逗號運算子, 因此應先求解a=3*5(也就是把“a=3*5”作為一個表示式)。

經計算和賦值後得到a的值為15,然後求解a*4,得60。整個逗號表示式的值為60。

4樓:匿名使用者

加個括號你就明白了

c = (5?a++:b--)

因為5>0 所以 c =a ++ = 3;

c語言中int a=1,b=2,c=3; c=(a+=a+2),(a=b,b+3); printf

5樓:匿名使用者

c語言copy提供一種特殊的運算子——逗號運算子。用它將兩個表示式連線起來。如:

3+5,6+8

稱為逗號表示式,又稱為“順序求值運算子”。逗號表示式的一般形式為表示式1,表示式2

逗號表示式的求解過程是:先求解表示式1,再求解表示式2。整個逗號表示式的值是表示式2的值。例如,上面的逗號表示式“3+5,6+8”的值為14。又如,逗號表示式

a=3*5,a*4

對此表示式的求解,讀者可能會有兩種不同的理解:一種認為“3*5,a*4” 是一個逗號表示式,先求出此逗號表示式的值, 如果a的原值為3,則逗號表示式的值為12,將12賦給a, 因此最後a的值為12。另一種認為:

“a=3*5”是一個賦值表示式”,“a*4”是另一個表示式,二者用逗號相連,構成一個逗號表示式。這兩者哪一個對呢?賦值運算子的優先順序別高於逗號運算子, 因此應先求解a=3*5(也就是把“a=3*5”作為一個表示式)。

經計算和賦值後得到a的值為15,然後求解a*4,得60。整個逗號表示式的值為60。

6樓:匿名使用者

c=(a+=a+2),(a=b,b+3);

->c=(a+=a+2);(a=b,b+3);

->c=(a+=a+2);a=b;b+3;

7樓:焚香木弋

int a=1,b=2,c=3;

c=(a+=a+2),(a=b,b+3);

相當於兩個順序語句:

先執行了c=(a+=a+2)這個語句得出c=a=a+1+2=4;

然後執行a=b,b+3;得出a=b=2;後面專的b+3單純是迷惑人

屬而已,不起作用。

所以輸出的答案是a=2,b=2,c=4;

8樓:沫宸萱

樓主自己敲下**執行結果不就知道了?

9樓:康康

2,2,4

可以自己編譯跑一下啊,比來問以後效率得多

void main() {int a=5,b=4,c=3,d=2; if(a>b>c) printf("%d\n",d); else if((c-1>=d)==1) printf("%d\n",d

10樓:匿名使用者

第一個if 裡面 判斷 a>b>c

她不是一塊判斷的 而是從左到右進行判斷

先判斷a>b 因為成立 所以a>b是正確的 所以a>b的值為 1 (1表示true,0表示false) 然後 就變成 1和c比較了 當然1小於c 所以第一個if 不滿足

滿足第二個if 所以就輸出2+1 =3 了

11樓:匿名使用者

這段程式可以執行,但是會有警告的,答案為3

void main()

12樓:戀晴忽忽

滿足第一個if,所以就輸出2

以下程式執行後的輸出結果是 main() {int a,b,c; a=1;b=3;c=5; printf(“%d,%d\n”,(++a,b++

13樓:塗增嶽牢嬋

我執行了下復

,結果是3,10

#include

main()

這裡面制的(++a,b++)是個bai逗號表示式du,a++和b++都執行了但最後輸出zhib++的結果所以daoa+b+c就是2+3+5

14樓:友玉花凌鸞

如果你在下面再加一句printf(“%d,%d\n”,(++a,b++),a+b+c);a,b的值就會變。

而這樣的話應該printf函式對變數只讀一遍,就是在一個printf中a都是1了。

15樓:初起雲尤丙

結果是來3,10啊。這主要是由於自增

操作源符++前置還是後置決定的,比如說++a,就是先自增再使用,而a++就是說先使用再自增。執行printf(“%d,%d\n”,(++a,b++),a+b+c)這條語句的過程中,a=2(就是說已經自增了),b=3(還沒自增)。等這條語句執行完之後,那麼a=2

b=4~

16樓:羅夕古卯

printf(“%d,%d\n”,(++a,b++),a+b+c);其中的(++a,b++)是什麼東東,有這麼寫的嗎?

++a表示先a=a+1再輸出,b++表示先輸出再b=b+1

有如下程式: main() {int a=5,b=-3,c=4; printf("%d%d\n",

17樓:匿名使用者

輸出結果是是-3,2

第一個 %d 對應 (++a,b++),都好運算子的返回值是最後一個結果就是 b++,而這個是後置++ ,所以是-3

第二個 %d比較簡單就是 4-2=2

18樓:布樂章

對啊,那個不是逗號表示式嗎,所以要取b的值,c-2的值就更不用說了,肯定是要取得,就是-32

19樓:自我程式設計

-3 2

括號運算子 取最右邊的值

故輸出相當於 printf("%d%d\n",b++,c-2);

b++是先取值再++

故相當於 printf("%d%d\n",b,c-2);

20樓:匿名使用者

-32取得是括號裡b的值和c-2的值

我在電腦上用vc試了

c語言.int a=-10,b=-3;printf("%d\n",-a++);printf("%d\n",-a+b);

21樓:哎明i雨

輸出的是 106

因為a++是先將a的值作為表示式a++的值,再執行a=a+1,所以第一個是-(-10);第二個a已經加了1;所以是9+(-3)

若有定義 int a 3,b 2,c 1並有表示式 a b,abc,b c 1,c 1,則表示式值相等的是哪兩個

你是誰會想 表示式一值為1,表達二好象有錯誤,不能那樣表示,應寫成a b b c,這樣寫二式為真,值為1,三式且符號兩邊都非零,都為真,所以三式值為2,四式為賦值語句,最終結果是c的值為2 湯福書屋 第一個 a b 輸出結果為 1 第二個 a b c為真,3 2為真 即為1,但1 1為假 即為0第三...

若a5b7c8且,若a 5 b 7 c 8,且3a 2b c 3,求2a 4b 3c的值

解 若a b c 0,則3a 2b c 0,與已知矛盾,因此a b c均不為0。令a 5t,t 0 則b 7t,c 8t,代入3a 2b c 33 5t 2 7t 8t 3 整理,得9t 3 t a 5t 5 3,b 7t 7 3,c 8t 8 32a 4b 3c 2 5 3 4 7 3 3 8 3...

數學已知a 2 b 2 c 2 ab 3b 2c 4 0,求的a b c值

因為上式中有ab項,所以可以考慮將b 2拆成3b 2 4和b 2 4的形式,由此可以配出 a b 2 2,然後由3b 2 4和 3b可以想到將4拆成3 1,這樣3b 2 4和 3b和3可以配成3 b 2 1 2的形式,剩餘的恰好可以湊成 c 1 3 2,這樣以後很容易得到a b 2,b 2 1,c ...