int x 1,y 2 printfd ,x y,xy為什麼得的值是5,而不是2或者

2021-03-27 14:17:36 字數 4140 閱讀 1547

1樓:匿名使用者

pirntf函式中的表示式的結合順序是由右向左,所以先算y++,再算x++,最後算x+y,因為只有一個%d,所以輸出對應的x+y的值為5

2樓:百劫度厄

標準c編譯器的話,應該是3,x++、y++是在所在語句執行完後再+1的,

即使是printf("%d",x+y,++x,++y);結果也為3,因為執行順序是從左至右,運算x+y時,xy還沒自加

不知道你用的什麼編譯器,是哪種c

3樓:

這可不一定是5,通常是3。請看:

4樓:匿名使用者

這個主要看編譯器編譯順序的問題

你看下這個問題就明白了

5樓:匿名使用者

vc++6.0執行結果是3

以前回答過這樣一個帖子,有空的話去看下。

6樓:

x和y都自增以後再相加的

7樓:匿名使用者

你是用tc編譯器吧。tc是5. vc是3

c語言中,int x,y,z;x=y=1; z=x++,y++,++y;printf("%d%d%d",x,y,z);最後輸出的結果是2 3 1 為什麼z不是3?

8樓:簡丹秋緱旭

賦值運算子的優先順序是

14,而逗號表示式的優先順序是15,也就是說上面的表示式中應該等價於這樣的結合:(z=x++),y++,++y;如果這樣寫的話,則答案很清晰,

為:2,3,1

9樓:陳從安頓雙

重點在這裡:z=x++因為後面沒有z的賦值語句,所以這裡決定z的取值..

因為自增運算子x++是先賦值再自增,則先把x的值賦於z,所以這裡z=1,然後x再自增變成2...

int x=3,y=2;則表示式printf(「%d」,(x-=y,x*=y+8/5));的結果是什麼

10樓:

逗號運算子順序執行

x-=y x=3-2=1

x*=y+8/5 x=1*2+1=3

所以結果為3

c語言:已有定義int x=3,y=4,z=5;則表示式 !(x+y)+z-1&&y+z/2的值是?

11樓:

答案是1。

涉及到的運算子: ! () + - && /運算子優先順序為:() ! / + - &&運算過程:

x=3,y=4,z=5

!(x+y)+z-1&&y+z/2

!(3+4)+5-1&&4+5/2

所以表示式計算步驟為

!(3+4)+5-1&&4+5/2 -> !7+5-1&&4+5/2!7為 0

-> 0+5-1&&4+5/2

5/2 整數除整數得整數 2

-> 0+5-1&&4+2

-> 4&&6

邏輯運算 &&

擴充套件資料c語言運算子的優先順序:

如果同一優先順序的運算子,結合次序由結合方向所決定。

12樓:匿名使用者

只是等於1的,我是經過turbo c2.0編譯過的,答案應該沒什麼問題的,程式是:

main()

答案為什麼會等於1呢?那是因為運算級別的問題,根據運算級別,實現算括號裡面的先,所以程式就變成!7+z-1&&y+z/2;

然後就算!運算,由於7是大於1的,也就是真,所以!真就是假,也就是0,所以函式就變成0+z-1&&y+z/2;

然後再算除號的,由於你這裡兩個都是整形的,所以小數點後面的數忽略,所以就變成0+z-1&&y+2;

接著計算加減運算,也就是變成4&&6;

因為4和6都是大於1的數,所以就是真,由於&&兩邊都是真的話,輸出的就是真,所以結果就是1。

要是還有什麼不明白的話,就mm我吧!嘻嘻~~~~~~

13樓:匿名使用者

1優先順序: 算數》條件》關係》賦值

關係中的優先順序: 非》與》或

14樓:匿名使用者

1,把運算子優先順序搞清楚就好了

15樓:匿名使用者

x等於y加4。四家外加1+3+5+4+1等於三五+4+5+1。

16樓:匿名使用者

!(3+4)+5-1&&4+5/2

=!7+4&&4+2

=!11&&6

所以說那個式子的值是:不是11並且是6

int x=-1,y=1;printf("%d,%d\n",x+y++,y);的結果是多少?

17樓:匿名使用者

不可能呀,我也除錯了一遍,就是0,2,這個答案應該是肯定的,可能是你的c語言編輯器有問題吧,你在找個別的試試看,會不會出錯

18樓:3問全不知

這個不怪你的,你用vc吧!!用tc就知道了

19樓:孤舟釣客

我用vs2010除錯了一下是0, 2啊。。。

main() { int x=1,y=2,z=3; x+=y+=z; printf("%d",(x

20樓:匿名使用者

嗯,可以先抄看看要求輸出什麼襲

printf("%d",(x這是一個條件表示式,判斷x假就取y++x=1,y=2,z=3

x+=y+=z 是自右運算的,y=y+z=5 此時y=5x+=y x=x+y=1+5=6

然後判斷xy 所以條件是假值,取y++

這裡注意一下,要求輸出的是y 不是y的值

所以最後結果是5 但如果要求輸出y y的值就是6

21樓:難得當歌對酒時

x+=y+=z 等價於 y=y+z; x=x+y; 故此bai後 z=3,y=5,x=y;

故 x,故整個du條件表達

zhi式的值dao就是專 : 之後的子表示式的值,也即 y++ 表示式的值,後屬綴++表示式返回++之前的值,故輸出5

main() {int x,y,z; x=1;y=2;z=3; x=y--<=x||x+y!=z; printf("%d,%d",x,y); } 執行的結果是1和1,為什麼不

22樓:梓林霧靄

「||」的用法為,當它前面的語句為真時,就不會執行後面的語句,你的語句的輸出為:2,1才對,「=」的優先順序是大於||的優先順序,所以按理說x=y--<=x是一個整體來執行,x=2,y=1。

23樓:匿名使用者

|這裡涉及到運算來符的優先順序及

源||的短路特性——當然此處沒出現那種情況。

優先順序 "<=" > "||" > "=" 故先執行y--<=x( 2<=1)為0 (執行該表達時後y再自減,y變為1) 再執行x+y!=z(1+1!=3) 為1 最後執行總的表示式 即x=0||1(x變為1) 當然輸出1和1了

24樓:匿名使用者

結果應該是0,1吧!

int x=5; int y=2+(x+=x++,x+8,++x); printf("%d",y); 結果是多少,為什麼?請大俠們解釋清楚點,謝謝!

25樓:匿名使用者

int x=5;

int y=2+(x+=x++,x+8,++x); //這裡括裡面要取的值是最後一個逗號後面的值

//前面依次執行 x+=x++,這個是先用了x再x++ x+=x相當於 x=x+x =5+5=10 再x++ x=11,然後是x+8,x不變,最後是++x,x=12,所以y=12+2=14

printf("%d",y); //輸出14

26樓:匿名使用者

結果為14

y的值為括號內最左邊的式子的值加上2; 括號內的計算順序是從右向左。

27樓:嘿若

14.。。。。跑出來的~

intx1,y3,z則表示式zxyxyxy的值為多少

int x 1,y 3,z 則表示式 z x y?x y x y 等同於z a?b c,如果a為真,則等於b,不為真則等於c 因為,x y 1 3 為假,所以z x y 1 3 4 答案是 4 x y的邏輯值為假,則取冒號後面的值,所以把x y的值賦值給z,而x y等於4,所以z的值為4。int x...

定義 int x 3,y 4,z 5則表示式 x y z 1 y z

c語言的優先順序 從上到下依次遞減 醋 初等,4個 指向結構體成員 結構體成員 壇 單目,9個 負號 型別 指標 取地址 sizeof長度 酸 算術,5個 減味 位移,2個 灌 關係,6個 等於 不等於 味 位邏,3個 按位與 按位異或 按位或 落 邏輯,2個 邏輯與 邏輯或 跳 條件,1個,三目 ...

Y1 Z1,X2 Y2 Z2可以求出

解答 1 使用換元法 f a x f a x 設t a x,代入上式,f t f 2a t 既是 f x f 2a x 這一結論可以直接寫出來 同理f x f 2b x f 2a x f 2b x 可以推出 f x f 2b 2a x 得證。同理 2 f x a f x f x a f x 2a 所...