c語言請讀程式 int x 10 int y xprintfd,dxy ,y則上面程式的輸出結果是

2021-04-19 18:59:57 字數 4212 閱讀 7145

1樓:盟訊數碼

printf先算後面的y++,先輸出10然後再自加,這時y=11,括號表示式返回的值是最後那個,這時返回11,所以輸出11,10

2樓:透訫涼

因為printf是從右開始運算的 所以先算y++ 然後再算逗號裡面的

3樓:章順新

你選的是對的,copy答案就是c,當執行到y=x++時,因為y=x++是先運算後自加,所以y的值是10,此時x值後加變成了11,當執行printf()函式時,因為printf()函式運算是從最後運算的,所以首先運算的是y++,因為y++還是後加加,所以y的值還是10,在運算y,所以第二個輸出的結果還是10,因為題中的printf()函式輸出的只有兩個結果,所以x++是不運算的,ok,完了

4樓:熾熱紅翼

c是正確來答案

因為int y=x++之後,

源y=10,x=11

(x++,y)輸出y,y=10

然後y++,先輸出y=10,然後y才為11所以答案是10,10

如果再加上printf("%d",y),會顯示為11所以,你的選擇是正確的

5樓:匿名使用者

x y 操作

10 - int x=10

11 10 int y=x++

後面的就沒影響了。直接輸出了

6樓:

vc++6.0執行是c答案,沒錯

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

7樓:匿名使用者

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

du首先,逗號

zhi運算子是

dao取右邊

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

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

8樓:wuli學粑粑

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

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

y++取10,y為11

9樓:手機使用者

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

10樓:啦啦啦種太陽

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

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

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

11樓:匿名使用者

int main()

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

12樓:匿名使用者

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

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

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

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

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

13樓:亮劍和

printf(「%d,%d」,(x++,y),y++)?

寫錯了沒

14樓:

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

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

15樓:匿名使用者

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

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

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

16樓:匿名使用者

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

17樓:匿名使用者

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

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

18樓:自由戰士

在主函式main中,定義

一個整形的x並賦初值為

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

19樓:匿名使用者

答案是 10 10

過程x=10

y=x++ y=10

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

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

20樓:【姬帥

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

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

21樓:隨楓輕逝

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原理

內同容上

int x=10,y; y=(x++)+(--x); printf("%d,%d",x,y); c語言執行結果 是10,18;18怎麼解釋???

22樓:匿名使用者

這種題不做也罷。

勉強分析一下:

y=(x++)+(--x);

等號右邊的先運算,即 先運算 (x++)+(--x); 從左向右順序運算

x++ 意思是先用x 再x=x+1 ,注意這裡是用x而不是用 10這個值 ,因此,到此時,x值還是10

--x意思是先操作 x=x-1,再用x , 此時,x=x-1後,x=9

計算 x+x = 9+9=18

別忘了,前面x++,只用了x, 這時經進行x=x+1=10了

因此,結果會是 x=10 y=18

這種寫法與具體的編譯器還有關係,實際應用沒有人會這樣寫**的。純粹是學術yy,所以,意義不大。

23樓:匿名使用者

是不是預處理的時候,--x使得x變成了9,接著在y=(x++)+(--x)的時候,就變成了9+9=18???估計是這麼回事。。。可以一步步debug試試看~~~

24樓:東芝序曲

應該19吧。。。怎麼來18?

C語言 讀程式題

哦,可以,你看下吧。前面的 int f int m,int n 為一個以兩個整形為引數,返回值為整形的子函式,實現的功能是把從m開始到n為止,中間相隔一個的數全加起來求和。你這個主函式中,x f a 2 a 6 a 2 3,a 6 7,相當於計算f 3,7 然後將所得的值賦值給x,最後輸出x。計算f...

c語言,讀程式題

1全部這個程式首先要明白fun 函式的操作,它的意思就是將a指標指向b指標所指向的地址,然後 擅自 將b指標指向的元素給加了1,知道了這個,就容易理解了 看main 函式 定義了字元 a 和 a 然後,p1指向了 a p2指向了 a 後來,再進入fun 函式中,在函式中,p1指向了p2所指向的 a ...

c語言題目 已知,int x 10,y 3,z

z x y,x y 逗號表示式,結果為最後一個表示式的值。x y 10 3 表示整數除,結果應該是整數。3 3顯示的是z的值,z的值是逗號表示式的值,逗號表示式是後面的x y的值,x y 10 3 3 x y 為取餘運算 10對3除 餘1 x y 1x y 因為x和y都是整型 所以結果取整 x y ...