C语言中STATIC的问题!
代码如下#include<stdio.h>intfun(intm){staticintn=1;++m;n--;return(m+n);}main(){inta,b;a=f...
代码如下
#include <stdio.h>
int fun(int m)
{
static int n=1;
++m;n--;
return(m+n);
}
main()
{
int a,b;
a=fun(0);b=fun(10);
printf("a=%d,b=%d\n",a,b);
}
为什么b=fun(10)值是10?在a使用一次fun()后n不是应该为2,再在bfun()时m=10,n=2,因此bfun()值不应该是12吗?
网路上搜索的资料说STATIC 那条语句事实上并没执行过,例如:
#include <stdio.h>
int fun(void){
static int count = 10; // 事实上此赋值语句从来没有执行过
return count--;
}
int count = 1;
int main(void)
{
printf("global\t\tlocal static\n");
for(; count <= 10; ++count)
printf("%d\t\t%d\n", count, fun());
return 0;
}
那么此代码第一次local static的值10是如何来的?
应如何理解static的唯一一次初始化? 展开
#include <stdio.h>
int fun(int m)
{
static int n=1;
++m;n--;
return(m+n);
}
main()
{
int a,b;
a=fun(0);b=fun(10);
printf("a=%d,b=%d\n",a,b);
}
为什么b=fun(10)值是10?在a使用一次fun()后n不是应该为2,再在bfun()时m=10,n=2,因此bfun()值不应该是12吗?
网路上搜索的资料说STATIC 那条语句事实上并没执行过,例如:
#include <stdio.h>
int fun(void){
static int count = 10; // 事实上此赋值语句从来没有执行过
return count--;
}
int count = 1;
int main(void)
{
printf("global\t\tlocal static\n");
for(; count <= 10; ++count)
printf("%d\t\t%d\n", count, fun());
return 0;
}
那么此代码第一次local static的值10是如何来的?
应如何理解static的唯一一次初始化? 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询