考慮我的評價如下:「如果」表達式
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;
}
是否評估表達式中'和'是操作符之間的運算符停止如果左操作數計算結果爲false?
'if'是C++語句,不是表達式。是的,C++需要進行短路評估(只要不涉及重載的'operator &&'或'operator ||')。 – ildjarn 2012-04-17 18:30:30
但是我們正在談論的關於在這種情況下評估的東西是表達式@Ildjarn。他們在「if」陳述內的事實實際上並不相關。 – 2012-04-17 18:32:39