读书人

短路了,该怎么处理

发布时间: 2012-04-14 17:14:21 作者: rapoo

短路了
#include <iostream.h>

int f(int i)
{
return ++i;
}
int g(int &i)
{
return ++i;
}
void main()
{
int a,b;
a=b=0;
a+=f(g(a));
b+=f(f(b));
cout < < "a= " < <a < < ",b= " < <b < <endl;
}
为什么运行结果是a=3而不是a=2呢?

[解决办法]
g(a) 运行后a的值已经变成1
f(g(a))返回2
加起来当然是3了
[解决办法]
int g(int &i)
{
return ++i;//因为是引用,函数内部对i的修改会影响到函数外部的实参(此例为main中的a)
}
int f(int i)
{
return ++i;;//因为 "不是 "引用,i是实参的拷贝,函数内部对i的修改 "不会 "影响到函数外部的实参
}

读书人网 >C++

热点推荐