下面程式段 int a 1,b 1 printfd,dab ,b 1的輸出結果

2022-12-04 05:16:11 字數 3311 閱讀 6743

1樓:匿名使用者

int a=1,b=1;printf("%d,%d",(a++,--b),b-1);

逗號表示式的值是最右一項的值

所以先輸出b-1

b-1=0

然後輸出--b,先自減,b=0,所以輸出0所以結果為0,0

2樓:問號朵朵

結果:0,-1

(a++,--b)返回--b:=0

補充:是0或-1都有可能,不同的編譯環境得到不同結果,vc6結果為0,0

2005、2008為:0,-1

3樓:匿名使用者

printf是從右向左計算的,所以按照以下步驟:

1: b-1 =》0

2:(a++,--b) =》(1,0) =》0所以最後的輸出結果為: 0,0

4樓:水水水還水水

printf是從右向左計算的,

1: b-1 =》0

2:(a++,--b) =》(1,0) =》0所以最後的輸出結果為: 0,0

5樓:匿名使用者

是0,-1啊,我用vs2008編譯的結果是0,-1

6樓:南蕍

逗號表示式的值是最右一項的值,所以先輸出--b,此時b=0;在輸出b-1,等於-1;

已經上機測試過。

下面程式的輸出是main(){int a=-1,b=4,k;k=(a++<=0) &&(!(b--<=0)); printf("%d%d%d%\n",k,a,b); 5 a. 0

7樓:網海1書生

判斷b是否小於等於0,然後把b減1

k=(a++<=0) &&(!(b--<=0))=(-1++<=0)&&(!(4--<=0))=true && (!false)

=true && true

=true

=1a=a+1=-1+1=0

b=b-1=4-1=3

所以答案是 c、1 0 3

8樓:水裡風

c(b--<=0)意為:(b<=0),判斷以後不論真假都再b--

下程式的輸出結果是() main() {int a=-1,b=1,k; if((++a<0)&&!(b--<=0))printf("%d%d\n",a,b);

9樓:匿名使用者

選cif條件中++a是先把a加1(加1後a等於0)後再和0比較,此時a不小於0,條件不成立所以它就不再判斷&&後面的條件了。之後就執行else語句列印b==1,a==0;所以選c

int a=1,b=-1; printf("%d\n",(a--,b++));

10樓:匿名使用者

(a--,b++) 這裡括號表示 括號中的是表示式運算,只會返回一個值

(a--,b++) 是逗號運算,先運算a--,然後運算b++,返回的是b原來的值,之後b會再自增1,所以輸出為-1,然後b變為0,a也變為0

11樓:匿名使用者

逗號表示式取用的是後者的結果,這裡取用的是b的值,只不過這裡輸出的是b++在++運算之前的值,這個是後++的用法,先取值再加加。

12樓:酷酷的小淘氣

逗號運算子的演算法是 取逗號右邊的式子的結果作為運算結果(1,2...,n)結果為n

所以輸出(a--,b++)就是輸出 b++這個結果b++就是賦值後加1,但是c語言直接賦值就輸出結果了簡單地說就是先輸出了,他還沒運算呢

所以是-1呀

執行程式段int a=-1,b=4,k;k=(++a<0)&&!(b--<=0);printf(「

13樓:匿名使用者

int a=-1,b=4,k;

k=(++a<0)&&!(b--<=0);

printf(「%d %d %d\n」,k,a,b);

分析:首先,計算(++a<0)&&!(b--<=0),首先計算(++a<0),結果為0。所以不計算&&右邊的表示式,&&支援短路功能

所以,輸出結果為:004

14樓:

依次輸出的是kab的值:

k的值是邏輯假的值,轉換整數就是0

a 因為自增過,所以是0

b沒有執行自減,因為++a<0不成立。

15樓:淇淇叮

#include

main()

有以下程式 #includemain() { int a=1,b=1; for(;a--;) b--; printf("%d,%d",a,b); }

16樓:南霞輝雪珂

結果應為01

這是由於++a先自加,使得a=0,所以++a<0不成立,則if((++a<0)&&!(b--<=0))

語句不成立,並且也不再執行b--<=0了。

故結果為01

17樓:宗政蓉城樊若

a=a+++b+++c++很顯然這個表示式裡面有運算子加號,所以要先分類,

a=a++

+b++

+c++,層次清楚了在從運算規則分解表示式a=a+b+c;a=a+1;b=b+1;c=c+1;所以最後結果為4,2,2

main() { int a=-1,b=1,c; c=(a++<=0)&&!((b--<=0)); printf("%d,%d,%d".a,b,c); } 這個程式的輸出結果?

18樓:匿名使用者

輸出結果為0,0,1

初始a=-1,語句 c=(a++<=0)&&!((b--<=0)); 中的a++,a先參與&&的運算 ,-1<=0就是真,然後a自加1,則最後a=0;再說b,初始b=1,(b--同a++一樣,先參與運算,再自減1,結果b=0)1<=0是假,但是有非運算子,!(1<0),就是真,真和真&&結果就是真,c=1

19樓:謝應宸

0,0,1

按照**一句句看,帶進去一算就好了

有int a=1, b=2; a=a+b; b=a-b; a=a-b;則printf("%d,%d\n", a, b );的輸出結果

20樓:萊愛景閉霜

a=a+b=1+2=3

b=a-b=3-2=1

a=a-b=3-1=2

這三條語句就是把ab值互換,所以輸出結果是2,1

若有定義int a 3,b 2,c 1,則執行程式段if

a的值為1 條件a b c的值為假,所以執行a c,結果a 1 a b c相當於 a b c 先計算a b,為真,值為1,計算1 c,為假,整個表示式的值就是假 若有定義 int a 3,b 2,c 1 則執行程式段if a b c a b else a c 之後,a 問題不全啊?a的值?a b c...

c語言中int a 3,b 2,c 1執行if a》b》c

執行的時候bai,應該寫a b b c 你du這樣寫的結果就是 先執zhi行a b,結果為真,在c語言裡dao真用1表示,就 版是算式權a b結果為1,接下來,1 c,結果為假,所以a c。比如你寫死迴圈的時候寫while 2 1 的時候是死迴圈,寫while 1 的時候也是死迴圈,明白了吧。if ...

why選A?語句int a 3,b 2,c 1錯誤的賦值表示式是A a b 4 3 B a b c 1 C a b 4 c D a 1 b c 4)

a b 4 3 這是賦值運算,bai從右至du左結合,但是zhi 這裡有括號b 4會被先執行,執dao行完後結內果為false 零 這容裡沒有問題,後面a的賦值就有問題了,到底是把0賦給a,還是將3賦給a呢?問題在這,你懂了嗎?a b 4 3 先運算 b 4 結果為false 即 0 a 0 3 不...