函数方面的问题

来源:百度知道 编辑:UC知道 时间:2024/05/28 18:51:41
#include"stdio.h"
int a;
int m(inta)
{static int s;return(++s)+(--a);}
void main()
{int a=2;printf("%d",m(m(a)));}
的解是3,m(m(a))是怎么算出来的

m(a)=1+1=2;
m(2)=2+1=3;

static int s;为静态局部变量,因为没有赋初值,编译器将其赋0.

首先执行m(a),返回2,此时m(...)中的s为1,将2传入m(...)再次执行,返回3,之后s=2.