| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 403 人关注过本帖
标题:这个程序具体怎样运行的?
只看楼主 加入收藏
wh2000292
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2007-3-19
收藏
 问题点数:0 回复次数:7 
这个程序具体怎样运行的?

int i=0;
main()
{int i=5;
reset(i/2); printf("i=%d\n",i);
reset(i=i/2); printf("i=%d\n",i);
reset(i/2); printf("i=%d\n",i);
workover(i); printf("i=%d\n",i);
}
workover(int i)
{i=(i%i)*(2*i+4);
printf("i=%d\n",i);
return(i);
}
reset(int i)
{i=i<=2?5:0;
return(i);
}
这个程序具体是怎么运行的

为什么第二个reset执行完的结果是2

[此贴子已经被作者于2007-3-19 22:14:53编辑过]

搜索更多相关主题的帖子: 运行 运行 
2007-03-19 22:12
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
你的函数reset虽然返回了值,可是你并没有赋给任何变量
第二个结果2是这样的:
reset(i=i/2);你在传递实参的同时也给i赋值了,i是全局变量所以值一直保留
i此时是5,除2得2,所以输出是2(你的i是整型)

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2007-03-19 22:25
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
函数都没有声明怎么运行的,

雁无留踪之意,水无取影之心
2007-03-19 22:34
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 

只要考虑一下全局变量和局部变量优先的问题,在局部变量范围内,全局变量会被屏蔽


雁无留踪之意,水无取影之心
2007-03-19 22:42
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
printf()、scanf()因为使用次数多被编译器特批不用声明

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2007-03-19 22:44
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
我不是说这两个函数,而是他自己定义的两个函数,定义在MAIN后面不是要声明吗?

雁无留踪之意,水无取影之心
2007-03-19 22:59
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
这个恐怕要怪老谭了,他的书里函数都没有提前声明过,所以很多人也这样学了
不过那样也可以编译运行,如果初学者要深入学习,会自己去看ANSI C的

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2007-03-19 23:08
无玩过界
Rank: 1
等 级:新手上路
威 望:2
帖 子:246
专家分:0
注 册:2007-2-20
收藏
得分:0 
对于古老TC也可以这样的

2007-03-19 23:08
快速回复:这个程序具体怎样运行的?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016069 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved