这道题C语言的题,n为什么会变成4,搞不懂,还有把这道题的过程说一遍。

图片说明

抱歉本着认真负责的态度,必须告诉你,我第二行打错了
应该是 s=f(a) ==> s=f(3)=3+1=4;没有3+f()。
虽然一般人能都明白我这种疏忽。你们刚学习的人,必须要和你们讲清楚,不然误人子弟。
还有我觉得我要补充的一点是。也是我忘记说的一点
就是静态变量的数据是存放在静态区,该变量不会因为函数结束,就销毁,所以f()中a的自加是有意义的。
每次执行完f()都会使a++。正因为静态变量的原因,只定义了一次就一直存在,也就只初始化了一次。

首先f( )函数中有一个静态变量a
s=f(a) ==> s=3+f(3)=3+1=4,注意f()中的a是后自加,所以第一次只能是3+1
s=s+f(a)==>s=4+f(3)=4+3+2=9,注意这时候再调用f()时,里面的a已经是2了。因为第一次调用时进行了后加一操作
所以答案选A
这题很简单,主要知识点就是后加加操作,以及局部变量的作用域。

首先f( )函数中有一个静态变量a
s=f(a) ==> s=3+f(3)=3+1=4,注意f()中的a是后自加,所以第一次只能是3+1
s=s+f(a)==>s=4+f(3)=4+3+2=9,注意这时候再调用f()时,里面的a已经是2了。因为第一次调用时进行了后加一操作
所以答案选A
这题很简单,主要知识点就是后加加操作,以及局部变量的作用域。

试试在f(n)中分别显示一下a就清晰了

我擦 看到有人抄了别人的回答 还抄错了

真是 哈哈哈哈哈哈哈哈哈哈嗝哈哈哈哈哈哈哈哈哈哈

因为static变量也是静态变量,在程序运行过程中被声明后就会一直保存在内存里,所以只能声明一次,第二次再访问那个函数时,给静态变量声明同时赋值的语句就不再执行了,而静态变量的值始终保存在内存里,也就是上次改变以后的值。

第一次 n+=a++ 等于 n=n+a;a++; 所以n=3+1=4,a=2
第二次 n=3+2=5,a=3
两次的n相加 s=4+5=9 选A

a++是使用完之后再加1,所以第一次调用是3+1,f函数里面的a是static,第二次调用的时候a=2 ,所以是3+2