【发布时间】:2012-04-29 03:03:08
【问题描述】:
考虑一下我有以下几点:
edge some_edge;
std::priority_queue<edge> my_queue;
即使队列可能为空,写这样的“如果”是否安全?
if ((my_queue.size() > 0) && (my_queue.top().weight < some_edge.weight)) {
do_something;
}
这个呢?
if ((my_queue.top().weight < some_edge.weight) && (my_queue.size() > 0)) {
do_something;
}
如果左操作数的计算结果为假,则计算操作数之间的运算符为“and”的表达式是否停止?
【问题讨论】:
-
if是 C++ 中的语句,而不是表达式。是的,短路评估需要 C++(只要不涉及重载的operator&&或operator||)。 -
但是我们在这个上下文中讨论的评估是表达式,@Ildjarn。它们在“if”语句中的事实实际上并不相关。
标签: c++ if-statement short-circuiting