C语言问题

[复制链接]
查看11 | 回复3 | 2008-9-15 08:54:58 | 显示全部楼层 |阅读模式
这是去年二级试卷真题:
int k=0;
void fun(int m)
{ m+=k; k+=m; printf("m=%d\n k=%d ",m,k++);}
main()
{ int i=4;
fun(i++); printf("i=%d k=%d\n",i,k);
}
以上程序运行结果是
m=4
k=4 i=5 k=5
我不明白后面的k为什么等于5
fun函数中的k在主函数没有关系啊。

回复

使用道具 举报

千问 | 2008-9-15 08:54:58 | 显示全部楼层
明白k++是怎么执行的就行了,是先用k的值,再+1。首先i++传进去的是4,也就是m是4,执行fun的时候m+=k,k为0,m还是4,然后k+=m,k变成了4,printf的时候,k++还是先用k的值,再自加变成5。所以退出fun的时候,k已经变成5了。fun执行完了,i也自加变成了5。...
回复

使用道具 举报

千问 | 2008-9-15 08:54:58 | 显示全部楼层
顶楼上,楼上说得没错,K是全局变量,k++以后到主函数中k就变成5了...
回复

使用道具 举报

千问 | 2008-9-15 08:54:58 | 显示全部楼层
主函数里调用了fun(4),因为是i++而不是 ++i,否则就是fun(5)了。在fun里k +=m =4 是因为m=4可是在printf(...,k++)中,k变成了5。k在fun,main函数之外被定义,是global variable,全局变量,所以在这两个函数里,对k的改变都会被储存下来。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行