下面程式的輸出結果是int x 2 int y 3 x xx 4x printfd ,y

時間 2021-08-30 11:02:44

1樓:刀秀慧

y應該是9,括號裡是三個表示式,用逗號運算子連線,所以順序從左到右,第一個表示式結束後x的值為5,即x+=x++,由於是後置++,所以先算x=x+x,x=4,再算x++,x=5,第二個表示式幾乎沒用,所以直接算第三個,由於是前置++,所以x的值變為6,最後在加上前邊的3就是9了。

2樓:樂酷科技

(x+=x++,x+4,++x);括號裡逗號分開是以最後一個++x作為表示式的結果

第一步 x+=x++ x的值為5 然後執行x+4和++x 所以x的值最後為6 y的值為6+3=9

3樓:

1.x和x做加法等於4,x再自加1,結果x等於5;

2.x加4等於9,但結果不返回x;

3.x自加1等於6;

4.逗號表示式去最右邊的值,所以結果為3+6=9.

4樓:匿名使用者

先進行括號裡面的逗號運算,x += x++; 即x = x + x++,因為x++是字尾自加,所以先使用,則x = 4,然後x再自加就是5,接著第二個x+4不會影響x的值,最後一個++x則能夠對x自加,現在x = 6,括號運算子中是看最後一個取值,所以括號的結果是6,然後和外面相加,結果就是9

int x = 2; int y = x++ * ++x; printf("x = %d\n",x); printf("y = %d\n",y); 求解詳細過程。

5樓:

明明是c ,樓上的都說錯了,也就x++和++x的問題,首先定義x=2,

執行完int x=2,之後x的值是2;

執行int y = x++ * ++x;將*號分為左右兩邊,首先x++沒有變是2,左邊的結果是2-------之後執行了右邊,x++執行了,x變成了3,之後又執行了++x,x變成了4,右邊變成了4,也就是2*4=8了;

然後x變成了4,(首先執行x++,x加了1,又執行了一個++x,x又加了1)

接著執行printf("x = %d\n",x); 將x輸出結果為x=4;

最後執行 printf("y = %d\n",y); 將y輸出,結果為y=8;

最後輸出結果,x=4,y=8。

這是個運算子優先順序的問題,學習的時候學的,以後在專案中,很少用到,記得多加括號就解決這種問題了,

6樓:匿名使用者

這個題是c語言中關於運演算法優先順序的問題。單目運算子的優先順序高於雙目運算子,即int y = x++ * ++x;等價於int y =( x++) *( ++x);知道運算順序後還要明白自增運算的含義,在c中++在前表示先引用後自增,++在後表示先自增後引用。

執行int y = x++ * ++x;將*號分為左右兩邊,首先x++沒有變是2,左邊的結果是2-------之後執行了右邊,x++執行了,x變成了3,之後又執行了++x,x變成了4,右邊變成了4,也就是2*4=8了;

然後x變成了4,(首先執行x++,x加了1,又執行了一個++x,x又加了1)

7樓:匿名使用者

跟編譯器優化有關。

win下面結果x=4,y=9

8樓:匿名使用者

搞清楚++x 和x++ 就行 ++x是x先加1再運算,,x++則是相反

y=x++*++x=2*3=6 運算完後x=4

c語言 下面程式段執行完成後的輸出結果是: int x=0; if (x=2) printf("%d",x++); else printf("%d",++x)

9樓:匿名使用者

輸出:2

x=2是賦值語句,成立,執行printf,因為是x++,所以先輸出x,x再自加,故答案是c

下述程式段的輸出結果是 int x=10; int y=x++; printf(“%d,%d”,(x++,y),y++); 答案是 11,10

10樓:匿名使用者

先放張圖,規律bai很容易看出來吧

du首先,逗號

zhi運算子是

dao取右邊

這裡涉及到引數的求回值順序,即確定答最右側y++輸出是5後,自增1,導致下一步中間y++輸出是6,之後再自增1,最後y的輸出自然就是7。

是不是眼熟,這不就是棧嘛,後進先出,這題不太會考察,出題人估計都沒想到這一層,只是單純想考逗號和自增運算。

11樓:wuli學粑粑

這樣想行不行,最後printf((%d%d),y,y++);

應該先把y++算出來(++二級運算子比分隔運算子高)

y++取10,y為11

12樓:手機使用者

我覺得是這樣的,首先逗號運算子輸出的是最後一個表示式的值,這是毋庸置疑的,逗版號表示式中y的值是11,權(上面的回答已經解釋得很清楚了,我就不做解釋了),至於之後的那個y++的值,問題出在printf函式上,程式只呼叫了一次該函式,在這次呼叫中,既把y放在逗號表示式中輸出第一個結果,又讓y執行y++操作輸出第二個結果,所以兩個輸出都是針對一開始初始化的y進行的,若是呼叫兩次printf函式,y++的結果才是11

13樓:啦啦啦種太陽

printf先算(x++,y)後算y++是10 10

後算(x++,y)先算y++是11 10

所以是printf計算順序的問題?我也不知道是不是,小白弱弱的猜一下

14樓:匿名使用者

int main()

輸出:11,10 (因為你的y的值是x而不是x加1)

15樓:匿名使用者

“(x++,y) 是逗號表達du式zhi,取第一個dao子表示式的值作為整個表

回達式的值,故整個表示式的值為11,然答後x達到12” 非也。“逗號表示式”這種說法我不置可否,逗號運算子在此處起連線作用,相當於“·····然後····”的意思,最終生效的是最後那一串**。第一輸出的是y,第二輸出的也是y。

上述**中,y只有初始化,沒有賦值(除了y++以外,但此處對後輸出的y沒有影響),因此輸出結果必然是相同的。

“y++ 整個表示式的值是10,然後y達到12” 這也太說不過去了吧,y最終達到12了?

問問題的這位大概是沒有自己動手操作的吧?如果是的話,這裡就勸一句:盡信書不如無書,實際操作才是硬道理。

16樓:亮劍和

printf(“%d,%d”,(x++,y),y++)?

寫錯了沒

17樓:

int y=x++; 這個是先把x的值賦值給y,然後x自身在++明白否?

main() { int x=4,y=3; int a,b,c; a=(--x==y++)?--x:++y; b=x++; c=y;} } 為什麼輸出答案是2 2 4

18樓:也許的貓

根據運算子優先順序,a=(--x==y++)?--x:++y等價於a=(((--x)==(y++)))?

(--x):++y,首先判斷x=x-1與y值的是否相等,y+1,若相等,則a=--x(--x先x=x-1,然後用於計算)。此時,x=2,y=4。

a=2b=x++,將x的值賦給b,然後x=x+1,所以b=2,x=3.

c=y,所以c=4。

在寫**的時候,最好將表示式中的不同優先順序的計算用括號括起來,這樣就不用為優先順序問題而煩惱了。

19樓:匿名使用者

是求abc吧?電腦上也說不清楚,自己多看書吧,很基礎的,應該是符號的優先順序問題

執行下面程式後答案為什麼是14int x=5; int y=2+(x+=x++,x+8,++x);printf("%d",y);大神們幫幫忙

20樓:手機使用者

這個題目與逗號表示式以及++運算有關係。 首先x+=x++,x+8,++x這個表示式可以變成x+=x++,++x 然後從右往左來:++x得到x=6; 繼續x+=x++ 得到x+=6從而x=12 從而x+=x++,x+8,++x表示式的值為12 y=2+(x+=x++,x+8,++x)=14; 所以輸出結果是14

程式 int x = 2, y = 3, z;z = (x++, y++);printf(“%d”, z);的結果

21樓:匿名使用者

首先這是一個賦值表示式,

z=(x++,y++) 意思是把y++的值賦給z;

碰到這種型別的,都是把括號裡的最後一個數賦給外面的一個變數;

所以這個題目就是把x++的值賦給z,

因為y=3,又因為y++的意思是先把y的值賦給z後,在執行自增加1,所以最後輸出的z的值為y原始的值,即為3,如果題目中有printf(“%d”,y);那麼這個結果就為4,即y++後的值;

22樓:

z是3吧

(x++, y++);這裡的是逗號運算

所以肯定是去最後面一個逗號後面的值,這是固定的下面看看

後++後++是先運算,後++

所以先把y值賦值給z,再++,運算結束的時候y是4,但z是3

23樓:匿名使用者

z=(x++,y++);先賦值再自增,(x++,y++)相當一個逗號表示式,只會把最右邊的值賦予變數,即

z=y值,z=3後y=4

24樓:匿名使用者

這是一個逗號表示式的擴充套件,其中括號中x++不是最終逗號表示式的值,而y++才是,由於y是先賦值再自加,故z=3

以下程式的輸出結果是,以下程式的輸出結果是( )?

if a 10 ok1 a 10,所以 a 10 不成立,btw,這個地方 if else 之間 什麼都沒有,至少應該有個分號 else if ok2 x 10 ok2 0,所以 不成立 else x 1 最後結果 x 1 小章33學姐 if後面邏輯值為真時執行,if a 10 false else...

下面程式的執行結果是為什麼,程式的執行結果是 ?

楊兵 執行結果 147 include void main 1 4 7 i 先進行加1操作,然後再判斷i是否符合要求 程式的執行結果是 聽不清啊 因為 i是i先自增後再取i的值,而j 是先取j的值,然後再j 自減。所以,程式的輸出是 9,9,9,10 輸出9,9,9,10 下面程式的執行結果是 a葰...

執行以下語句後的輸出結果是int x 3,y 0 printfd,d1 x

printf d,d 1 x 10 1y 10 1x 10 1x 10 1x 10 1x 10 從左至右求解,1 x 結果是假,則值為0,所以 1 x 10 就變成 0 10,顯然是真,則值為1。用同樣的方法,求解。所以答案是 1,1 首先看第乙個結果 1 x 10 13 10 1 3 10按照運算...