4 回答

TA貢獻2016條經(jīng)驗 獲得超9個贊
include <stdio.h>
int func(int x) //這個參數(shù)傳得沒有意義,傳入后沒有引用其值
{int y=0;
static int z=3;
x=z++, y++; //','操作符,取最后一個表達式的結(jié)果為最終結(jié)果,即y++,由于y是局部變量,每次進入該函數(shù)y都會被初始化成0,又y++是先引用后自加,所以賦給x的是y的初始值0
return(x); //返回始終為0
}
void main()
{int a=2,i,b;
for(i=0;i<2;i++) //循環(huán)3次,a每次加1
b=func(a++); //前面說了,func的參數(shù)傳入無意義,所以返回值與a的值無關(guān),由于func始終返回為0,所以b始終為0
printf("%d\n",b); //打印“0”
}

TA貢獻2051條經(jīng)驗 獲得超10個贊
有兩個知識點需要知道:
1、靜態(tài)變量與普通變量無二,區(qū)別在于靜態(tài)變量始終占有內(nèi)存,進出函數(shù)不會被改變,不消失。只在同一文件中能調(diào)用,其他文件無法調(diào)用。
在你的程序中,b的值取決于函數(shù)func中的z值,第一次循環(huán)進去函數(shù)func返回3,靜態(tài)變量自加變?yōu)?,第二次循環(huán)返回4.

TA貢獻1784條經(jīng)驗 獲得超9個贊
static變量z只初始化一次,所以for循環(huán)兩次,第一次b等于z等于3,同時z++變?yōu)?,第二次循環(huán)時b等于4,同時z++變成5。由于,顯示的是最后一次的b,所以最終結(jié)果為4
- 4 回答
- 0 關(guān)注
- 851 瀏覽
添加回答
舉報