注册 登录
编程论坛 C++教室

为什么c=2而不等于3啊?[已解决]

laigaoat2005 发布于 2007-06-21 14:11, 499 次点击

#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编辑过]

9 回复
#2
laigaoat20052007-06-21 14:12

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

#3
laigaoat20052007-06-21 14:14
还没有人啊,我再顶!
#4
laigaoat20052007-06-21 15:24

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

#5
wfpb2007-06-21 15:29
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;
#6
wfpb2007-06-21 15:31

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

#7
布头儿2007-06-21 16:39
main前为什么不用写void呢?
#8
布头儿2007-06-21 16:44
c+=f(h(c));我是新手~不太明白这个里面的意思
就是字符型和整型之间这是什么啊
#9
tobyliying2007-06-21 17:37


c+=f(h(c));

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

#10
laigaoat20052007-06-21 23:00
哦,谢谢.
1