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++)

答案是3,怎么来的啊

a=c++,b++; return(a) 中,c初始值为3, 在a=c++中先把c赋值给a,然后再 c++ 及a = 3后c才变为4
如要a = 4,则要这样才行:a = (c++)追问

k=f(a++);pringtf ("%d\n",k),后面没全之前,你可以给我详细说下不?谢谢

追答

a=c++,b++可看作3句:
a = c;
c++;
b++;

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-18
f(int a)中a是形式参数,怎么能够最为返回值呢
第2个回答  2012-06-18
c是静止变量,值是不变的
第3个回答  2012-06-18
哥们,没打错把、
第4个回答  2012-06-18
没贴全?

什么答案?追问

k=f(a++);pringtf ("%d\n",k)

追答

因为static c=3;

这个是静态的,每次调用时C都是3

a=c++; //这里a=3
然后就返回了a

追问

可以详细点不?还有a=c++,b++取得为什么不是b++的值啊?

追答

f(int a)
{
int b=0;
static c=3;
a=c++,b++; //你找下逗号的用法
return(a);//这里是最后的返回,用的是A的值
}

一个包含逗号的表达式首先计算逗号左边的表达式,然后计算逗号右边的表达式;整个表达式的结果是逗号右边表达式的值

主要是整个表达式的值是右边的

你找下c++ 逗号与等号优先级,逗号的优先级没有等号高

本回答被提问者采纳
相似回答