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

時間 2021-08-30 10:51:32

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++了兩次

請高手幫我詳細解說一下,這個電路圖,請詳細點哦,一般的或網上覆制別來了,謝謝

我來說一下吧 第一個迴路 9 15v電壓通過r2給zd供電,使q1的b極穩定在vzd 4.7v 這4.7v電壓通過q1的be結後經過輸出 負載,輸出負,回到9 15v的負極,形成一個迴路。第二個迴路 9 15v電壓通過r1,q1的ce結,輸出 負載。輸出負,回到9 15v的負極。穩壓原理 穩壓管vz...

請高手幫忙看看這機子!要分析準確詳細

樓主要問的應該是這個配置執行大型遊戲與設計是否夠用。你的配置已經夠用了,但別忘了配乙個好的電源,而硬碟一定要三年保,記憶體最好能組成雙通道。分析什麼?很一般沒有什麼好說的!你也不問你這是什麼問題呀!如果你預算有限可用下面這個配置 cpu intel e2200 主機板 asus p43 顯示卡 昂達...

NBA打架之後有什麼處罰高手請詳細得解答下

打架犯規 比賽中或死球期間,隊員 教練員或訓練員打架,要登記技術犯規,不判給罰球,參加打架的人員應立即被驅逐。另根據情況判打架人員不超過20000美元的罰款和停賽。nba比賽中,對犯規的判罰是較為嚴厲的。如隊員 教練員或訓練員出現下列情況即可被驅逐 接觸肩的水平或以下部位的肘部犯規 沒有體育道德行為...