(1)main(){int x=1,y=2,z=3; if(x=y+z(這里沒錯嗎?為什么不是==)) printf("****"); else printf("@@@@");}(2)#define MIN(x,y) (x)<(y)?(x):(y) main() {int i=8,j=50,z; z=5*MIN(i,j); printf("%d\n",z); }為什么結果是8?
熱心網友
(1)的結果是"****"嗎? if 只是判斷后面那個括號里是不是為0,x被重新賦值為y+z的結果,不為0(2)不錯,想了一會,好久沒有動腦子了。單獨時i 首先要清楚的是判斷語句if()要判斷的是括號里面是否非0或者等于0;如果是非0那么它將會執行接下去的語句,如果它為0則執行else語句.對于你題目中的x=y+z;表示的是把y+z的值賦給x,然后if()再來判斷x的值是否非0;很顯然x的值確實非0所以它繼續執行語句printf("****"); 而對你所說的x==y+z;它是一個邏輯運算,表示的是x是否等于y+z,如果成立得到1值,如果不成立得到0值.要嚴格區分=和==兩者的區別. peterqq 的回答不錯 加油熱心網友
熱心網友
熱心網友