fun函数问题

#include <stdio.h>
int fun(int A)

int b=0;
static int c=3;
a=(c++,b++);
return(a);
}
main()
{int a=2,i,k;
for(i=o;i<2;i++)
k=fun(a++);
printf("%d\n",k);
}
答案是0,请教各位大大,这是为什么?

#include <stdio.h>
int fun(int a)
{
int b=0;
static int c=3;
a=(c++,b++);    //整体为逗号最右边的值,【即 b==0 赋值给a , b再自增为1】
return(a);
}
main()
{
int a=2,i,k;
for(i=0;i<2;i++)
k=fun(a++);      //每一次调用,不管实参 a 的值是多少,形参 a 的值取                               //决于 被调用函数中的变量 b 
                     //而每次调用 b都重新赋初值 0, 重复【】括号里的那一步
printf("%d\n",k);
}

追问

函数应都从主函数开始编译,为什么a的取值都取决于变量b?

追答

是啊,程序执行的入口都是从主函数开始

a=(c++, b++);都是逗号最右边的值,即 b 的值
每次for循环,不管 实参 a 的值传递给 形参 a 的值是多少,
都会把 变量b 的初始值 0先赋值给 形参 a,再把 a==0 返回到主函数,赋值给k

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-02-06
fun函数里
a=(c++,b++);逗号运算符看最右边,这里即a=b++<==>a=b,即a=0;return 0;
k=fun(a++),即k为0;