求值顺序

gueangyik 2009-09-20 01:46:48
假如
f1()*f2()
这时候先调用f1()还是f2()啊~~~2个函数都涉及到同一个对象,而且改变其值~~
先调用哪个对结果有影响~~~?怎么解决??
...全文
63 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用楼主 gueangyik 的回复:]
假如
f1()*f2()
这时候先调用f1()还是f2()啊~~~2个函数都涉及到同一个对象,而且改变其值~~
先调用哪个对结果有影响~~~?怎么解决??

[/Quote]

有的是从右到左
mstlq 2009-09-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jicy_luo 的回复:]
试试不就知道了,在f1()和f2()中添加打印语句,看先输出那个知道了!

不过,建议最好还是不使用或少使用全局数据!
[/Quote]
试了也没什么意义,这个编译器的结果是从左到右,那个编译器的结果是从右到左,没个定则,移植性不高啊
zhongjiekangping 2009-09-20
  • 打赏
  • 举报
回复
编译器做了很多的事情啊
luojc714 2009-09-20
  • 打赏
  • 举报
回复
试试不就知道了,在f1()和f2()中添加打印语句,看先输出那个知道了!

不过,建议最好还是不使用或少使用全局数据!
lufy_sun 2009-09-20
  • 打赏
  • 举报
回复
结果值依赖编译器。

楼上的正解。
mstlq 2009-09-20
  • 打赏
  • 举报
回复
先调用哪个是未定的……
依赖于编译器的具体实现……

解决方案,写成下面两种形式之一
tmp1=f1();
tmp2=f2();
tmp1*tmp2;


或者
tmp2=f2();
tmp1=f1();
tmp1*tmp2;

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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