閑來無事在網(wǎng)上閑逛,看到百度知道有人問到一個(gè)關(guān)于靜態(tài)變量的使用問題,感覺很經(jīng)典放到這里與各位共享。原問題如下:
函數(shù)f定義如下,執(zhí)行語(yǔ)句“sum=f(4)+f(2);”后,sum的值應(yīng)為( )。為什么不是A,而是C
int f(int m)
{ static int i=0; int s=0;
for(;i<=m;i++) s+=i; return s;
}
A、13
B、16
C、10
D、8
我的回答:
因?yàn)閕為靜態(tài)變量,靜態(tài)變量的值從第一次使用而創(chuàng)建,到程序結(jié)束時(shí)才釋放內(nèi)存,因?yàn)樵谡{(diào)用f(4)后,i已經(jīng)為5,當(dāng)在調(diào)用f(2)時(shí),i開始仍為5,由于i<=m的條件已經(jīng)為假,故不再執(zhí)行,因此最終為10即C。
新聞熱點(diǎn)
疑難解答