| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 499 人关注过本帖
标题:为什么c=2而不等于3啊?[已解决]
只看楼主 加入收藏
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
结帖率:88.89%
收藏
 问题点数:0 回复次数:9 
为什么c=2而不等于3啊?[已解决]

#include <stdio.h>
int f(int i){return ++i;}
int g(int &i){return ++i;}
int h(char&i)(return ++i;}

main()
{
int a=0,b=0,c=0;
a+=f(g(a));
b+=g(g(b));
c+=f(h(c));
print("a=%d,b=%d,c=%d",a,b,c);
}

[此贴子已经被作者于2007-6-21 23:05:03编辑过]

2007-06-21 14:11
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
收藏
得分:0 

在线等啊,自己先顶一下!谢谢啊!

2007-06-21 14:12
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
收藏
得分:0 
还没有人啊,我再顶!
2007-06-21 14:14
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
收藏
得分:0 

没有人帮我啊?我自己顶啦.
我就搞不明白,为什么不能两两次调函数了?
比如:把 b+=g(g(b)); 改成 temp=g(b); b+=g(temp);就可以

2007-06-21 15:24
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
c+=f(h(c));
c+=f(h(c))的过程如下:
int t=h(c); //c=1,t=1
t=f(t); //t=2;
c=t; //c=2;

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2007-06-21 15:29
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

你的g函数的参数是引用,如果g(g(a))的话,里面的g()返回的临时变量的引用作为参数传递给外面的g()是危险的。。所以错误、、、


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2007-06-21 15:31
布头儿
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2007-6-15
收藏
得分:0 
main前为什么不用写void呢?
2007-06-21 16:39
布头儿
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2007-6-15
收藏
得分:0 
c+=f(h(c));我是新手~不太明白这个里面的意思
就是字符型和整型之间这是什么啊
2007-06-21 16:44
tobyliying
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2007-4-16
收藏
得分:0 


c+=f(h(c));

我个人认为是
c+=f(1); --------- c=0
c+=2; -------- c=0+2
字符和整型之间应该是隐式转换吧

2007-06-21 17:37
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
收藏
得分:0 
哦,谢谢.
2007-06-21 23:00
快速回复:为什么c=2而不等于3啊?[已解决]
数据加载中...
 
   



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

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