计算顺序问题求解

Michael_Xie 2007-09-10 11:01:50
int f1( int n ){ cout << "f1" << " " << n << endl; return n; }
int f2( int n ){ cout << "f2" << " " << n << endl; return n; }

int i = 1;
cout << f1( i ) + f2( i ) << endl;
cout << f1( i++ ) + f2( i++ ) << endl;
输出如下:
f1 1
f2 1
2
f2 2
f1 1
3
谁能给我个解释啊?谢谢!
...全文
95 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Michael_Xie 2007-10-06
  • 打赏
  • 举报
回复
楼上典型的看贴不思考的人,请仔细看输出结果!
问题是拿出来讨论的,而不是拿来遭鄙视的!
wandnv219 2007-09-30
  • 打赏
  • 举报
回复
解释什么?
cout < < f1( i ) + f2( i ) < < endl;
执行f1(1) 结果:f1 1
执行f2(1) 结果:f2 1

f1(i++)是先执行f1(i) 再自增,故调用f1时,i还是1 .到f2(i)已变为2

LZ新手?要不是那就太菜了
arong1234 2007-09-10
  • 打赏
  • 举报
回复
难道没有人告诉你,这种表达式应该尽量避免写出来,而不是去研究?
这个表达式的结果是依赖编译器的,不同编译器结果不一样,C++对此无规定,所以凡是出这种题目的老师都是误人子弟,凡是研究这种问题的都入了歧途

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧