【发布时间】:2017-04-28 21:40:06
【问题描述】:
假设我有一段这样的代码:
int y = 1;
int z = 1;
int x = std::min(y+1,z);
查看std::min(here)的文档,我想知道函数第一个参数中的加法是否会产生计算开销,即y+1是否可能执行两次。
我提出问题的原因是文档显示这是std::min 的可能实现:
template<class T>
const T& min(const T& a, const T& b)
{
return (b < a) ? b : a;
}
那么有谁知道y+1是否被执行了两次?
【问题讨论】:
-
"the documentation" 表明这两个表达式每个都只计算一次。
-
“y+1 是否可能执行两次”.. 如果
min是一个函数而不是宏,那怎么可能呢?似乎您在问这个问题是因为您在宏的情况下已经看到 “执行两次”,但不了解发生这种情况的原因 why。因为如果你理解得很好,你可能不会问这个问题。如果是这种情况,那么我建议您先了解宏观情况。 -
@Nawaz 你是绝对正确的。感谢您为我指明正确的方向。