设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
中问网首页
我的收藏
站长博客
搜索
搜索
本版
帖子
用户
第一问答网
»
论坛
›
中问网
›
问答
›
C语言问题
返回列表
发新帖
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的改变都会被储存下来。...
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
千问
主题
0
回帖
4882万
积分
论坛元老
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
积分
48824836
加好友
发消息
回复楼主
返回列表
问答
热门排行