2 回答

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超4個(gè)贊
第一次調(diào)用函數(shù) i+=m+1 得到 i=3 m=i+a+b 得到m=8 所以返回8
由于m和i是靜態(tài)的 所以第二次調(diào)用時(shí),i=3,m=8,然后i+=m+1 得到i=12 m=i+a+b m=17
返回17
因此答案為A

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超2個(gè)贊
第一次func(a,b)函數(shù)時(shí),傳遞過(guò)來(lái)的兩個(gè)值是4,1 即在func(a,b)函數(shù)中a=4,b=1 static int m=0,i=2,定義了兩個(gè)靜態(tài)變量,即一直戰(zhàn)用內(nèi)存,函數(shù)調(diào)用結(jié)束不釋放,結(jié)果依然是上一次改變后的結(jié)果。
執(zhí)行 i+=m+1 →即 i=2+0+1=3;
執(zhí)行 m=i+a+b; → m=3+4+1=8;
執(zhí)行 return(m) →返回 m=8;
printf("%d,",p); 輸出 8
第二次執(zhí)行func函數(shù) 依然傳遞 4,1
在func函數(shù)中,因?yàn)閙 和i是靜態(tài)變量,所以這時(shí)m=1,i=3
執(zhí)行 i+=m+1; → i=3+8+1=12;
執(zhí)行 m=i+a+b; → m=12+4+1=17;
執(zhí)行 return(m) →返回 m=17;
printf("%d,",p); 輸出 17
最后結(jié)果為 8 ,17
- 2 回答
- 0 關(guān)注
- 161 瀏覽
添加回答
舉報(bào)