mainintx,y,z x y 1 z xyy printfd,d,d n ,x,y,z請高手詳細解答為什麼

2021-08-27 07:42:55 字數 4509 閱讀 2012

1樓:万俟永芬俎水

x=y=1; //x=1,y=1

z=x++,y++,++y; //逗號運算子的結合性是從左至右,因此先將x的值賦值給z,z=1,然後x自增

//x的值變為2,然後y++,++y,y自增了2次,所以y的值變為了3.

//因此,最終x=2,y=3,z=1。

2樓:獨希榮胡環

x=y=1;

x=1;y=1;

z=x++,y++,y++;

z=x++;y++;++y;

z=x;x++;y++;++y;

z=x++,y++,++y;是一個逗號表示式;逗號的運算優先順序是最低的,所以先運算z=x++;

而逗號運算式是從左向右算的也就是說z=x++,y++,++y;這個整體表示式其實就是++y當然與本題無關

3樓:仍曼華詩緞

main()

故輸出的結果為2,3,2

注:1.z=x++,y++,++y;是一個逗號表示式2.要理解前自加與後自加的區別

4樓:北印枝路綢

x=y=1;

x=1,y=1

z=x++,

z=2y++,

y=2++y;

y=3所以

x=2,y=3,z=1

x++的意思就是

x=x+1

先用後加

++y的意思也是y=y+1

但是先加後用,

你這裡沒有區別,如果有迴圈的話有會看出區別了

#include "stdio.h" main() { int x,y,z; x=y=1; z=x++,y++,++y; printf("%d,%d,%d\n",x,y,z); }

5樓:翥甾天下

#include "stdio.h"

main()

其中x++是表明在執行完z=x後x才會自動加一,z=x++這條語句執行完後z=1,x=2

y++也是在這條語句結束後才會加一,這時y=2;

++y,是在這條語句執行前y自動加一,這時y=3所以結果會是2,3,1

給你舉一個例子:

int a=b=0;

a=++b;因為++b是在這條語句執行前先自動加一,所以這條語句結束後a=1,b=1

a=b++;上面a和b都=1了,這條語句執行後執行b++,所以這條語句結束後a=1,b=2

6樓:匿名使用者

原因就是運算子優先順序的問題,就像樓上說的:逗號運算子的級別最低,比等號還低

所以這個語句:z=x++,y++,++y;實際上等於:(z=x++),(y++),(++y);這樣寫的話相信樓主就知道為什麼z=1了吧

樓主認為z應該是3的原因應該是把z=x++,y++,++y;當成z=(x++,y++,++y);了

7樓:匿名使用者

反彙編過程如下:

0040106e mov dword ptr [y],1

00401075 mov eax,dword ptr [y]

00401078 mov dword ptr [x],eax

0040107b mov ecx,dword ptr [x]

0040107e mov dword ptr [z],ecx

00401081 mov edx,dword ptr [x]

00401084 add edx,1

00401087 mov dword ptr [x],edx

0040108a mov eax,dword ptr [y]

0040108d add eax,1

00401090 mov dword ptr [y],eax

00401093 mov ecx,dword ptr [y]

00401096 add ecx,1

00401099 mov dword ptr [y],ecx

1、逗號分隔表示式,賦值符號的優先順序高於逗號。

2、可以看到逗號分隔的語句,只是從左到右執行。並不是像函式引數那樣從右到左壓棧。

8樓:匿名使用者

{int x,y,x; /* 初始化三個整形變數 */

x=y=1; /* 對x,y賦值 為1 */

z=x++; /* z=x++ 給z賦值為x的值1,然後x自加1,x變為2,*/

y++; /*y++ 等價與 y=y+1,所以y自加1,*/

++y; /*++y又自加1,最後y值為3 */

printf(" %d,%d,%d ",x,y,z);

} 最後補充 z=x++;y++;++y;之間要用分號,用逗號是語法錯誤!!!!!!!!

9樓:匿名使用者

x=y=1;//x=1 y=1

z=x++,y++,++y//語言z=1(x=1),y=1+1,y=1+2

雖然是x++ 但是如果是++x的話 y=2了所以x=2,y=3,z=1

10樓:匿名使用者

int x,y,z;

x=y=1;

//x=1,y=1,z未知

z=x++,

//x=2,y=1,z=1

y++,

//x=2,y=2,z=1

++y;

//x=2,y=3,z=1

c語言:main()?{int x,y,z;? x=y=1;? z=x++,y++,++y;? printf("%d,%d,%d\n",x,y,z);}

11樓:聲金普翰

#include

void

main()

執行結果是2,3,1.

x賦給z後再自加,z為1,x為2,y連續加兩次為3。

main() { int x,y,z; x=y=1; z=x++,y++,++y; printf("%d,%d,%d\n",x,y,z); }

12樓:匿名使用者

x=2 y=3 z=1

z=x++,y++,++y;

先++y再y++得y=3

z=x++先把x=1賦予z,再x++,因為x++是先用後加

13樓:

考查 自加及逗號運算子

x=2y=3z=1

14樓:匿名使用者

2,2,1

z=(x++)=1,x=2;

(y++)=1,(++y)=2。

main() {intx,y,z; x=y=1; z=x++,y++,++y; printf("%d,%d,%d\n",x,y,x); }

15樓:獨秀榮何琬

main()

故輸出的結果為2,3,2

注:1.z=x++,y++,++y;是一個逗號表示式2.要理解前自加與後自加的區別

main() {intx,y,z; x=y=1; z=x++,y++,++y; printf("%d,%d,%d\n",x,y,z);} 請高手詳細解答為什麼

16樓:

x=y=1;  //x=1,y=1

z=x++,y++,++y;  //逗號運抄算符的結合性襲是從左至右,因此先將x的值賦值給z,z=1,然後x自增//x的值變為2,然後y++,++y,y自增了2次,所以y的值變為了3.

//因此,最終x=2,y=3,z=1。

17樓:匿名使用者

x=y=1; <=等價

抄=> x=1;y=1;

z=x++,y++,y++; <=等價=> z=x++;y++;++y; <=等價=> z=x;x++;y++;++y;

z=x++,y++,++y;是一個逗號表襲達式;逗號的運算優bai先級是最低的,du所以先運算z=x++;

而逗zhi號運算式是dao從左向右算的也就是說z=x++,y++,++y;這個整體表示式其實就是++y當然與本題無關

18樓:匿名使用者

x=y=1; x=1,y=1

z=x++, z=2

y++, y=2

++y; y=3

所以 x=2,y=3,z=1

x++的意思就是 x=x+1 先用後加

++y的意思也是y=y+1 但是先加後用,你這裡沒有區別,如果有迴圈回的話有會看

答出區別了

19樓:***x櫻

x++了一次

y++了兩次

請高手幫我解籤,請高手幫我解籤!要詳細

你求的事業,我就用白話解釋了。三四籤 中籤 上籤 古人 桃園結義 未宮 詩曰 行藏出入禮義恭。言必忠良信必從。心不了然且靜澈。光明紅日正當中。從本作聰。言聰有作矢必忠良志必同。中有作空。詩意 此卦紅日當空正照之象。凡事遂意也。解曰 心中無事。秋水澄清。不須疑惑。事自然成。家宅 清吉。自身 安。求財 ...

請高手回答汽車噴漆的詳細步驟

汽車噴漆具體步驟如下 1 車體作防鏽及內部噴塗 視車身情況由鈑金工完成。2 打磨及修飾斜邊 使用p60 180 砂紙打磨車身上經過鈑金修補及需要原子灰的地方。3 除塵 清潔 使用壓力槍及除矽清潔劑清除車身上的微塵及汙漬。4 貼護 使用反貼技巧貼上遮蔽紙。5 塗裝底漆 混合4 1紅底漆及施噴1 2層打...

請高手說下練習Breaking的詳細步驟 本人沒有任何基礎

我不來複製的,平我學的經驗來 哈子,初學者力量要好,不好的話就練。每天練上肢力量還有腰腹力量,其二要壓腿拉韌帶。期間試著倒立,先靠牆,再籬牆。能堅持6 8秒就可以了,注意腿要直。然後練撐。學舞步跟著 等這差不多的你就應該會一些freeze了。學powermove還需要過程,本人不推薦自學,找專業的老...