a值最后是15没错。
不过 输出的是括号里面的
(a=3*5,a*4,a+5)
这个是一个逗号运算表达式,值是最右的值,也就是a+5的值。
所以 输出是15+5=20
需要注意的是赋值优先级高于逗号,所以
a=3*5是第一部分
a*4是第二部分
a+5是第三部分。
#includeintf(intn);main(){inta=3,s;s=f(a);//s=4s=s+f(a);//f(a)=5;s=4+5=9;printf("%d\n",s);}intf(intn){staticinta=1;//这里是静态变量,静态变量的特点是赋值语句仅执行一次n+=a++;//这句话相当于n=n+a;a++;后置++先返回原数值,然后自变量+1//所以第一次s=f(3)n=3,a=1;n+=1=4,a=2,f(a)=4//s=4;//第二次f(3),n=3,(a=1这句话不执行),a=2,n+=2=5,a=3,f(3)=5//s+=5=9returnn;}程序运行后的输出结果是9;