这个要怎么解释,分析下面程序的运行结果,并分析原因。
int x=6,y=5;int fun_1(int a,int b)
{
static int x=1;
++a;
x+=a+b;
return x;
}
int main()
{
int x=10;
int i;
for(i=0;i<2;i++)
printf("%d\t",fun_1(x,y));
}
#include<stdio.h> int x = 6, y = 5; int fun_1(int a, int b) { static int x = 1;// 将 x 定义成静态局部变量,并赋初值为1,(静态局部变量存储于进程的全局数据区,即使函数返回,它的值也会保持不变, // 所以,第二次循环回来,x = 17) ++a; // 将接收的实参 x = 10 传递来的数自增1,即 a = 11 x += a + b; // 循环第一次相当于:x = 1 + a + b = 1 + 11 + 5 = 17;循环第二次相当于:x = 17 + a + b = 17 + 11 + 5 = 33 return x; // 返回 x } int main() { int x = 10; int i; for (i = 0;i<2;i++) printf("%d\t", fun_1(x, y)); }