int f(int n); main() { int a=3,s; s=f(a); s=s+f(a); printf("%d\n",s); } int f(int n)10362{ static int a=1;n+=a++;return n;} 语句n+=a++中的a=3还是a=1?它是静态局部变量,主函数中的a=3是对整个程序起作用吗?
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/28 03:18:25
int f(int n); main() { int a=3,s; s=f(a); s=s+f(a); printf("%d\n",s); } int f(int n)10362{ static int a=1;n+=a++;return n;} 语句n+=a++中的a=3还是a=1?它是静态局部变量,主函数中的a=3是对整个程序起作用吗?
int f(int n); main() { int a=3,s; s=f(a); s=s+f(a); printf("%d\n",s); } int f(int n)10362
{ static int a=1;
n+=a++;
return n;
} 语句n+=a++中的a=3还是a=1?它是静态局部变量,主函数中的a=3是对整个程序起作用吗?
int f(int n); main() { int a=3,s; s=f(a); s=s+f(a); printf("%d\n",s); } int f(int n)10362{ static int a=1;n+=a++;return n;} 语句n+=a++中的a=3还是a=1?它是静态局部变量,主函数中的a=3是对整个程序起作用吗?
代码好乱!这两段代码是同一个程序是吧?
我理解你的程序是这个:
int f(int n);
main()
{
int a=3,s;
s=f(a); //可以看做s = f(3)
s=s+f(a); //这里f()函数又被调用一次
printf("%d\n",s);
}
int f(int n)
{ static int a=1;
n+=a++; //n = n+a++;此处a是静态变量,并且执行该语句后进行自加操作
return n;
}
那回答问题.首先main函数里的变量a不是静态的,作用域在main函数里.而f()函数里的a是局部静态变量,那么在f()函数里可以实现累加,在f()里可访问.LZ可以当做两变量看待.所以,main函数里的a一直是3不变.而f()函数里a第一次调用时是1,调用后是2(也就是第二次调用前f()函数里a的值),再第二次调用后是3.
以上个人理解,不对之处批评指正.