复制
收藏
提问
简洁
#include<stdio.h> #include<conio.h> int a=4,b=6,c=5; int fun() { static int m=0; m++; return m; } int main() { int i; for(i=1;i<=2;i++) { fun(); } printf("%d",fun()); return 0; } 为什么循环结束后还要再次调用一次 fun()函数
2个月前
全网
文档
学术
百科
知识库
回答简洁模式
深入研究一些
在提供的代码示例中,fun()
函数被设计为每次调用时都会增加一个静态局部变量 m
的值。这个变量 m
由于使用了 static
关键字,因此它在函数调用之间保持其值,而不是每次调用时都重新初始化为 0。这意味着即使在循环结束后,m
的值仍然保留着最后一次调用 fun()
时的值。
循环中,for(i=1; i<=2; i++)
执行了两次,每次都会调用 fun()
函数,并且 m
每次都会递增 1。因此,经过两次循环后,m
的值将变为 2。循环结束后,printf("%d",fun());
再次调用 fun()
函数,此时 m
再次递增,变为 3,并且这个值被打印出来。
代码的逻辑是,即使循环结束,fun()
函数的调用仍然会改变 m
的值,并且这个改变的值会被打印出来。这就是为什么循环结束后还要再次调用一次 fun()
函数的原因。157 这种设计可以用于跟踪函数被调用的次数,即使在循环之外调用函数,也能反映出之前调用的累积效果。6
你觉得结果怎么样?