32
第一次调用:
p=4,k=1,t=2,
调用结束后k=2,t=3,返回值是4*2*3=24
第二次调用:
p=4,k=1,t=3,
调用结束后k=2,t=4,返回值是4*2*4=32
fun(int p)
{ int k=1
static t=2
k=k+1
t=t+1
return(p*k*t)
}
main( )
{ int x=4
fun(x)
printf(''%d\n'',fun(x))
}
这个函数分析时,主要注意的是静态变量的处理,静态变量在一次调用结束以后,它的值能够保留到下一次调用,继续有效,不过在这里只调用一次也无所谓的。程序运行的结果是:
32
其中有不少小的错误,作为程序它是不能运行的。
#include<stdio.h>int main( )
{ int y=2,a=1
while(y--!=-1)
{ do{a *=y a++} while(y--) }
printf("%d,%d",a,y)
return 0
}
运行后的输出是:
1,-2
分析运行过程:
y=2,a=1
判断,为真,y变为1
进入do循环:
a=1*1=1a++变为2
内循环判断y--为真,y变为0;
再次内循环:
a=2*0=0a++变为1
内循环判断y--为假,y变为-1;
外循环判断为假,y变为-2;
所以,最后的输出是1,-2
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)