int mainint x 10 int y xprintfd,d nxy ,y我想問 xy 是什麼意思啊

2021-03-22 03:29:07 字數 5808 閱讀 1459

1樓:匿名使用者

先回答(x++, y)括號裡是逗號(,)表示式,c明確規定它的運算是從左到右,逗號表示式有值且值為最右邊的結果,也就是左邊x++先算,再算右邊y,(x++, y)的結果為最右邊也就是y的值。

至於printf()函式的多個引數(x++, y)和y++的計算順序,則如樓上所說,可能先算(x++, y)再算y++則輸出是10,10(大多是這個結果,lz的結果也屬於這種情況)

也可能先算完整個y++再算(x++, y)則輸出變成11,10了,依賴於編譯器,不必深究。

2樓:匿名使用者

這個不需要太深追究 不同機器不同編譯器 結果可能是不同的 因為運算順序是不一定的

3樓:匿名使用者

(x++,y) 這個是個逗號表示式,返回的值為y

int main() {int x=10; int y=x++; printf("%d,%d\n",(x++,y),y++); } 我想問(x++,y)是什麼意思啊?

4樓:匿名使用者

(x++, y)它是乙個逗號表示式,整個表示式的結果是最後乙個表示式即y的值。

5樓:匿名使用者

(x++,y):逗號表示式,取後面的值

因為int y = x++;先把x加一之後賦給y,再更新x到11,所以此時y的值認為10

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

6樓:自由戰士

在主函式main中,定義

乙個整形的x並賦初值為

10,在定義乙個整形y,並賦初值為x++(因為x++是先專運算後自加,所以y=10,此屬時x=11),後面就是輸出整形了。(x++,y)是逗號運算,取最後乙個表示式的值為最終結果,y++前面已說過了。

7樓:匿名使用者

答案是 10 10

過程x=10

y=x++ y=10

輸出 第乙個%d是在(x++,y )取y y=10 x++不用看了

第二個%d是y++ 先輸版出y在加1 所以權y=10

8樓:【姬帥

在主bai函式main中,定義乙個整形的dux並賦初值為

10,在定義zhi乙個整形y,並賦初值為x++(因dao為x++是先運算後自加,版所以y=10,此時x=11),後權面就是輸出整形了。(x++,y)是逗號運算,取最後乙個表示式的值為最終結果,y++前面已說過了。

9樓:隨楓輕逝

int x=10; x=10int y=x++; y=10 ,x=11因為baidux是取值

以後zhi+1的dao

printf("%d,%d\n",(x++,y),y++); 輸出:y=10,x=11原理

內同容上

main( ) {int x=10,y=10;int a,b,c;a=--x==y?++y:--x;b=x++;c=y printf("%d %d %d\n"a,b,c)

10樓:百里莫步

main( )

{int x=10,y=10;

int a,b,c;

a=--x==y?++y:--x;

1)這裡有四個運算

符:=(賦值元素安撫)、--(自減運算子)、==(等於運算子)、?:(條件運算子),而由運算子的優先順序從高到低有:

--、==、?:、=。先計算--x後x=9,再計算等於運算子,等於運算子左右兩邊不相等,所以條件運算子第二個條件執行,即執行--x,然後x=8,也就是賦值運算子右邊等於8,所以a=8,而且同時x=8,y=10;

b=x++;x++表示在使用x之後(即先將x的值賦給b),使x的值加1,所以此時b=8,x=9,y=10;

c=y ;將y的值賦給c,所以c=10,x=9,y=10;

printf("%d %d %d\n"a,b,c)所以輸出結果為8 8 10

11樓:匿名使用者

a=--x==y?++y:--x; 這個首先x-1,然後與y比較是否相等,如果相等,y+1,如不等,x-1,最後將結果賦值給a,此時結果,a=8,x=8,y=10

b=x++; 先將x的賦值給b,然後x-1,此時 b=8,x=9

main() { int x=10,y=20,t=0; if (x==y)t=x;x=y;y=t; printf(「%d,%d\n」,x,y); }

12樓:匿名使用者

main()

把第乙個函式弄整齊之後 再看 x首先不等於y,所以 t=x這句不會被執行,然後繼續往下執行x=y,x就等於20了,在執行y=t y就等於0了

13樓:匿名使用者

你的if沒有把t=x;x=y;y=t;都括起來。。。沒括號那就只影響後面乙個,所以if (x==y)x=y if不成立所以下面程式只執行了;y=t;

14樓:少年遊

你的程式裡if後面沒有加{}來標誌範圍,那麼if只對它後面的一句起作用,碰到第乙個分號就截止,第乙個實際上只執行了x=y;y=t; 第二個實際上只執行了y=t

15樓:幻☆天芒

首先判斷x==y,為假。所以x=y不執行。接著y=t,所以y=0。所以輸出的時候,x=10,y=0.

17.執行以下程式的輸出是? main() {int x=1,y=2,z; z=x+++y; printf(「%d%d%d\n」,x.y.z); }

16樓:匿名使用者

輸出結果是223。

printf(「%d%d%d\n」,x.y.z); //這條語句存在問題:"應該是英文的,並且變數之間應該用,分隔

改後的程式如下:

main()

17樓:匿名使用者

2,2,3

z =( x++) + y

實際上等於:z = x + y; x ++;

所以:z = 1 + 2; x = 1 + 1;

18樓:匿名使用者

這個要看編譯器的,有的會看成(x++)+y,有的會看成x+(++y)。不過,一般的編譯器輸出都是前者,即2,2,3

int x=10,y; y=(x++)+(--x)+(++x); printf("%d,%d\n",y,x); 執行結果為28,11. 求解釋

19樓:匿名使用者

看了下彙編, 貌似首先先做的減法。不知道ansi c標準是怎麼規定的。

32 000e c744241c movl $10, 28(%esp)

32 0a000000

7:test.c **** int y;

8:test.c **** y=(x++)+(--x)+(++x);

33 .loc 1 8 0

34 0016 ff4c241c decl 28(%esp)

35 001a 8b44241c movl 28(%esp), %eax

36 001e 01c0 addl %eax, %eax

37 0020 ff44241c incl 28(%esp)

38 0024 0344241c addl 28(%esp), %eax

39 0028 89442418 movl %eax, 24(%esp)

40 002c ff44241c incl 28(%esp)

9:test.c **** printf("%d, %d\n", y, x);

20樓:匿名使用者

從左往右計算啊,++的優先順序高於+,第乙個先用後加,值為10,存入x,第二個先減在用,值為9,存入x,所以第一步為9+9,完後值加1,x值為10,後面不用說了吧,y=9+9+10.

很簡單的例子,int x=5;y=++x*++x;值為y=7*7,不知我說清楚沒,手機打的

21樓:匿名使用者

不同版本的c答案不一樣.你的答案是

在visual c++中除錯的結果28,11在turbo c2.0的答案是30,11在visual c++中如果有多餘2個以上的++或--運算時,從第3個開始x和前面的x的值就不一樣了.變成y=9+9+10=28.

c語言#include main() { int x=010, y=10; printf("%d,%d\n", ++x, y--); }

22樓:go陌小潔

首先,++是單目運算子,優先順序是高於=的,所以是先執行++。

第二,x++返回值是(x+1),是表示式而非變數第三,++x的返回值是x,是變數。

謝謝採納。

23樓:匿名使用者

(一)已知 x 的值為

2, y 的值為0

則 y=++x; 的意思是

先x=x+1; (此

後x的值為3,y的值為0,)

後 y=x; (此後x的值為3,y的值為3)(二)已知 x 的值為 2, y 的值為0則 y=x++; 的意思是

先 y=x; (此後x的值為2,y的值為2)後 x=x+1; (此後x的值為3,y的值為2)--x 與 x-- 也是一樣的道理

010是八進位製數,它的十進位製數是8

x的值為8,所以輸出 ++x 的值為9

24樓:

輸出結果是:

10,10,9,9

第乙個:x--先用x,值是10

第二個:x的值還是10,這裡的x自減要等整個輸出語句完成後才會執行第三個:--y先y自減1,然後再輸出,結果是9第四個:y現在的值已經是9了

25樓:匿名使用者

10 10 9 10

x--,x,--y,y這四個引數對於printf來說是同時呼叫的,不存在先後關係

x-- 是先呼叫x,然後再做減法 就是10x 的值就是10

--y 是先做減法 再呼叫 就是9

y 的值就是10

#include int main() { int x=1; int y=1; y+=x++*x++; printf("%d,%d\n",x,y); return 0; } 結

26樓:匿名使用者

#include

int main()

主要問題在這句:y+=x++*x++;

它等價於:

y+=x*x;

x++;

x++;

也就是說,y+=1;

x+=1;x+=1;

結果自然是3,2.

27樓:匿名使用者

3,2.

因為:y+=x++*x++ , x=1 y=1,相當於y=y+x++*x++ y=1+1*1=2x通過兩次自增運算為3。

實際上這種**風格簡直可以上絞刑架。

語文作文得了10分,求助10篇語文作文10分

可以使用小標題,能多給你幾分。字寫得要工整,漂亮。作文內容要獨一無二,不要太俗,內容新穎。以上是我的建議,60分的作文至少也能打上50分吧,平常多寫作文,多練練啊!其實我一直覺得,作文就是把看到的,聽到的,想到的寫下來而以,就像日記。雖然也許那樣作文的會樸實無華,但總比流水文好。我一直這樣寫作文的,...

10股送10股派10元是什麼意思

你的100股會變成200股 每10股送10股 現金100元 每10股派現10元 沒扣紅利稅,紅利稅按持股時間不同而不同,有5 10 20 三檔 除權除息後,每股 會變成4.5元。資產會因為紅利稅而變成980元 990元 995元。紅利稅不同扣除的稅金不同。買的 每10股派1元什麼意思 分紅利的,你要...

10架A10攻擊機10架F22戰鬥機10架B2轟炸機能把哈。爾。濱炸成什麼樣

那要看是什麼樣的彈藥了,如果是核彈,一架b2就能把哈爾濱夷為平地 如果是使用常規彈藥,那攻擊的主力就是那10架b2了,可以投下近200噸的炸彈,每架f22雖然也有近10噸的載彈量,但是對地攻擊並不是其長項,其攻擊效果甚至不如那10架a10,a10可以攜帶近8噸的彈藥,但是清一色都是對地攻擊裝備,所以...