【发布时间】:2012-05-29 11:29:20
【问题描述】:
我理解经典例子的问题
int i=0;
foo(i++, i++);
但我无法说服自己以下是有效还是无效
int foo(int& i)
{
i=42;
return 99;
}
bar(foo(i), i);
我知道“foo(i)”和“i”的求值顺序是未定义的,但“求值”到底是什么意思?即 bar 的第二个参数总是 42,还是可以在 foo 更改之前传入 'i' 的当前值?
【问题讨论】:
-
顺序未指定,不是未定义...
-
“评估”的意思是“获得价值”。
标签: c++ expression evaluation