c语言程序题请教~

来源:百度知道 编辑:UC知道 时间:2024/06/06 04:50:07
#include<stdio.h>
int a=1;
int f(int c)
{static int a=2;
c=c+1;
return (a++)+c;
}
main()
{int I,k=0;
for(I=0;I<2;I++){int a=3;k+=f(a);}
k+=a;
printf("%d\n",k);
}
为什么结果是14?我算的是15啊?
请详尽些~谢谢啦~

static全局变量与普通的全局变量有什么区别:static全局变量只初始化一次,防止在其他文件单元中被引用;
static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;
static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝
第一次循环:(a++)+c=2+4=6;后a=3
第二次循环:(a++)+c=3+4=7;
最后:k+=a; 6+7+1=14
这里的a为全局变量
test:
把函数写成:
int f(int c)
{static int a=2;
c=c+1;
cout<<a<<endl;//这样就可以看出a 的值了
return (a++)+c;
}