如果求f(f(3)),输出是2,那个k是一直是0还是会变呢? int f(int x) { static int k=0; x+=k--; return x;

int f(int x)
{ static int k=0; x+=k--;
return x;}

第一次进入函数,k是初始化值,0
之后每次进入函数,k值是上次退出函数的值.
f(f(3)) 就是先调用f(3) 然后再用返回值做参数 调用一次f
第一次 f(3) 退出时k=-1 返回值x为3
第二次 f(f(3))=f(3) 这时k=-1 自减后 k=-2, 返回值x值为2
所以最终结果是2
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-31
就第一次执行f函数是k为0,以后执行就为上次执行后的值
其实你就可以将之视为一个全局静态变量,只不过这个变量定义放在了f函数内,对外不可见而已本回答被提问者采纳