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()
有以下程式 #include
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 不...