
c语言请教
f(inta){staticc=0;C=a+C++:return(c);}main(){inta=2,i,k;for(i=O;i<2;i++)k=f(a++);print...
f(int a)
{static c=0;
C=a+C++:
return(c);
}
main()
{int a=2,i,k;
for(i=O;i<2;i++)
k=f(a++);
printf("%d\n",k);
}
答案是什么,请具体解释一下,谢谢 展开
{static c=0;
C=a+C++:
return(c);
}
main()
{int a=2,i,k;
for(i=O;i<2;i++)
k=f(a++);
printf("%d\n",k);
}
答案是什么,请具体解释一下,谢谢 展开
7个回答
展开全部
我上机给你实验过,答案是7
主要原因在于,定义C时候,是static,有了这语句,在每次调用函数的时候,的第一句c=0是无效的
而如果你不定义static,而是直接定义int c的话,,那么每次调用函数,第一句都会使得c=0,,这时答案就变成4了
我是上机测试过的,绝对正确
主要原因在于,定义C时候,是static,有了这语句,在每次调用函数的时候,的第一句c=0是无效的
而如果你不定义static,而是直接定义int c的话,,那么每次调用函数,第一句都会使得c=0,,这时答案就变成4了
我是上机测试过的,绝对正确
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
程序我没有去尝试
先进行函数F
a+c=2 再进行++;在返还a++ 得到K的值为4
i=1 运行函数F,a的值是2,a+c=4 (这里的C因为是静态局部变量值是保留的所以C的值为2) 在进行++,得到值为5,返还a++ ,k的值为6
输出K的值为6,以前k的值给最后一次循环给覆盖了
我是按自左到右的方式来算的
这也是我自己的意见 供你参考
先进行函数F
a+c=2 再进行++;在返还a++ 得到K的值为4
i=1 运行函数F,a的值是2,a+c=4 (这里的C因为是静态局部变量值是保留的所以C的值为2) 在进行++,得到值为5,返还a++ ,k的值为6
输出K的值为6,以前k的值给最后一次循环给覆盖了
我是按自左到右的方式来算的
这也是我自己的意见 供你参考
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
答案是7,for循环执行了两次,首先,a=2调用函数f,返回c=3,第二次,a=3调用函数f,此时c为上次保存的值3,因为是static类型的,c=6,再c++,就是7了,循环完毕,输出函数返回的值7.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
答案应该是7
你的程序有点问题:
#include<stdio.h>
f(int a)
{
static c=0;
c=a+c++;
return(c);
}
main()
{
int a=2,i,k;
for(i=0;i<2;i++)
k=f(a++);
printf("%d\n",k);
}
你的程序有点问题:
#include<stdio.h>
f(int a)
{
static c=0;
c=a+c++;
return(c);
}
main()
{
int a=2,i,k;
for(i=0;i<2;i++)
k=f(a++);
printf("%d\n",k);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
老大 这下 我看不明白了
a调过去 为 c=2+0;
啊
不是先运算后加减吗??
第二次调用 为c=3+c
a调过去 为 c=2+0;
啊
不是先运算后加减吗??
第二次调用 为c=3+c
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询