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 所...