这个为什么选A 我算了是B

img

img

答案 : 7 8 9 选A
过程解释:
此题考查静态局部变量 加了static的静态局部变量在函数调用以后内存没有释放(因为static修饰的局部变量内存分配在全局区(也叫静态区),未使用static关键字修饰的局部变量内存分配在栈区(栈区的生命周期是函数结束之后)),因为c被static关键字修饰,所以下次进入此函数,c的值是上次修改以后的。但是普通的局部变量,如题b每次调用以后释放内存,下次调用是都是初始化为初值.
在main函数中(划重点)
第一次调用f(a) f函数内的变量 b = 1, c = 4, a = 2 返回值就是7
第二次调用f(a) f函数内的变量 b = 1, c = 5(静态局部变量) a = 2 返回值8
第三次调用f(a) f函数内的变量 b = 1, c = 6(静态局部变量) a = 2 返回值9

以上仅供参考,如有任何疑问,可以评论回复,看到即回。
希望对题主有所帮助!可以的话,点个采纳!

答案就是A。你怎么算的B呢

c是局部静态变量,每次调用f()会累加1,分别为4, 5, 6
a,b都是局部变量,每次调用f(),它们的值都一样,都是2, 1
所以结果是7, 8, 9