有以下程序:int a=2;int f(int n){static int a=3;int t=0;if(n%2){static int a=4;t+=a++;
有以下程序: int a=2; int f(int n) {static int a=3; int t=0; if(n%2){static int a=4;t+=a++;} else{static int a=5;t+=a++;} return t+a++; } main() {int s=a,i; for(i=0;i<3;i++)s+=f(i); printf("%d\n",s); } 程序運(yùn)行后的輸出結(jié)果是( )。
A.26
B.28
C.29
D.24
正確答案:C解析:定義“int a=2;”中的全局變量a,起作用的范圍是從定義此變量的位置開始到本源文件結(jié)束;定義“static int a=3;”中的靜態(tài)局部變量a的作用范圍是其所在的函數(shù)f,并對(duì)其只賦一次初值,以后每次調(diào)用函數(shù)時(shí)不再重新賦值,而只保留上次函數(shù)調(diào)用結(jié)束時(shí)的值;復(fù)合語(yǔ)句“{staticint a=4;t+=a++;}”和“{static int a=5;t+=a++;)”中定義的兩個(gè)變量a屬于復(fù)合語(yǔ)句中定義的變量,作用的范圍只在其本身所在的復(fù)合語(yǔ)句內(nèi),對(duì)于本程序來(lái)講,第三行定義的靜態(tài)局部變量并不會(huì)對(duì)
詞條內(nèi)容僅供參考,如果您需要解決具體問(wèn)題
(尤其在法律、醫(yī)學(xué)等領(lǐng)域),建議您咨詢相關(guān)領(lǐng)域?qū)I(yè)人士。