c语音急救

来源:百度知道 编辑:UC知道 时间:2024/05/05 14:05:56
请输出一下程序的结果:
#include<stdio.h>
f(int a)
{int b=0;
static c=3;
a=c++,b++;
return(a); }
main()
{int a=2,i,k;
for(i=0;i<2;i++)
k=f(a++);
printf("%d\n",k); }

谢谢大侠帮忙啊,最好还有详解。
答案写的是:4

4
几点需要注意的:
1
a=c++,b++;
这样对a赋值是c的值,而不是c++以后的值
同时,由于这样赋值语句的存在,f的返回值和参数值没有关系

2
因为c是static
所以每调用一次就是在上一次的基础上++的

3 代码风格不好 int很多地方不该省略
#include<stdio.h>
int f(int a)//int 说明f的返回值
{
int b=0;
int static c=3;// int 是type static是修饰符
a=c++,b++;
return(a);
}
int main()//int 说明main的返回值
{
int a=2,i,k;
for(i=0;i<2;i++)
k=f(a++);
printf("%d\n",k);//\n而不是\n 注意全角半角
}

不过觉得这段代码很奇怪啊 没意义

mm

个人认为,结果是3,这是例子还是你自己写的?
这个f(int a),感觉不管传递一个什么数,都是先定义一个c=3,然后把c的值给a,然后c自加(如果静态变量不允许第二次赋值的话,那么第二次调用f时,c就是4,这样就可以解释答案为什么是4了。看一下静态变量的介绍吧),再返回赋值给k。