| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1006 人关注过本帖
标题:网上的一道题目,验证你是不是高手??
只看楼主 加入收藏
venus85
Rank: 6Rank: 6
等 级:侠之大者
帖 子:159
专家分:477
注 册:2010-11-27
收藏
得分:0 
以下是引用hoovi在2010-12-2 20:48:22的发言:

第4个i有结果么???
为什么没有结果?(i%i)=0但是后面还加了个4啊
结果就是i=4
2010-12-02 20:51
keeplove
Rank: 2
等 级:论坛游民
帖 子:6
专家分:15
注 册:2010-12-2
收藏
得分:15 
今天我刚来这论坛,第一个就是看的是你的贴子,所以,很认真地看完,我是这样认为的:
要知道主调函数和被调函数的区别。
主调函数的变量在内存中开辟后就一直到程序结束才被释放,而被调函数的变量只有使用到时才会临时开辟,调用完毕马上释放。
所以有以下分析:
int i=0;
fun1 (int i)
{ i = (i%i)*(i*i)/(2*i)+4 ;
   printf(“i=%d\n”,i);
   return (i) ;
}
fun2(int i)
{ i = i<=2 ? 5 : 0 ;
   return (i) ;
}
main ( )
{ int i = 5 ;/*这里的i是局部变量,在main中有效*/
   fun2(i/2) ; printf(“i=%d\n”,i) ; /*这里的i/2就等于2,传到fun2()后返回5对吧,但这个返回值对其后的printf丝毫没影响,因为fun2()中的i在被调用后内存就没了,所以printf输出的还是原来main()中的i*/
   fun2(i=i/2) ; printf(“i=%d\n”,i) ;/*注意!i=i/2已经是出现在main中的一个赋值语句,所以原来在main中的i值就变为2,也即在内存中已经改变,后面的main中的i值就变啦!  好 i=i/2就等于2就传到fun2返回5,可是这个5对后面的printf没用,printf中用的是main的i,所以就是2啦!*/
   fun2(i/2) ; printf(“i=%d\n”,i) ;/*知道i/2等于多少了吗?是1!,传到fun2返回0,但是printf用的依然是main中的i,所以输出2*/
   fun1(i/2) ; printf(“i=%d\n”,i) ;/*i/2等于1传到fun1后,i%i(即1%1)就等于0,使用fun1输出fun1中的i值4,然后返回4,在main中用printf输出main中的i,也就是上一句的说的i值2啦!*/

呵呵,如果觉得我没说错的话就顶一下吧!
}
2010-12-02 21:01
keeplove
Rank: 2
等 级:论坛游民
帖 子:6
专家分:15
注 册:2010-12-2
收藏
得分:0 
回复 8楼 venus85
  楼主现在用的是传值方式调用  所以被调用函数当然不能改变main中的变量值啦
2010-12-02 21:04
songtosong
Rank: 2
来 自:仙女座星云&pound;&micro;伴星
等 级:论坛游民
帖 子:25
专家分:52
注 册:2010-8-29
收藏
得分:0 
5
2
2
4
2
2010-12-02 21:46
aiyinsitan
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:183
专家分:177
注 册:2010-4-22
收藏
得分:0 
5
2
2
4
2
2010-12-02 22:19
xzy199999
Rank: 4
等 级:业余侠客
帖 子:326
专家分:286
注 册:2010-11-19
收藏
得分:0 
正确答案是
5
2
2
4
2

我是初学者
2010-12-03 09:24
abc3210cba
Rank: 2
等 级:论坛游民
帖 子:63
专家分:97
注 册:2010-9-26
收藏
得分:0 
5
2
2
4
2
2010-12-03 11:36
zruhai
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-12-3
收藏
得分:0 
领教
2010-12-03 12:03
a657195029
Rank: 2
等 级:论坛游民
帖 子:7
专家分:28
注 册:2010-10-31
收藏
得分:0 
55044
2010-12-03 18:34
快速回复:网上的一道题目,验证你是不是高手??
数据加载中...
 
   



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

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