首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

短路了,该怎么处理

2012-04-14 
短路了#include iostream.hintf(inti){return++i}intg(int&i){return++i}voidmain(){inta,bab0a+

短路了
#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的修改 "不会 "影响到函数外部的实参
}

热点排行