C++ 中 [in] 相等运算符的求值顺序?
Order of evaluation of [in]equality operator in C++?
C++ 中相等运算符的求值顺序是什么?
我看到很多代码示例,例如 this
template <class ForwardIt, class Compare>
ForwardIt is_sorted_until(ForwardIt first, ForwardIt last, Compare comp)
{
if (first != last) {
ForwardIt next = first;
while (++next != last) {
if (comp(*next, *first))
return next;
first = next;
}
}
return last;
}
并在 while (++next != last)
- 左侧是否先于右侧评估?
顺序未指定,like most binary operators in C++。编译器首先评估 ++next
或 last
是完全合法的,因此如果 next
和 last
是对同一基础变量的引用,您将进入未定义的行为领域(在这种情况下,没有问题)。
C++ 中相等运算符的求值顺序是什么?
我看到很多代码示例,例如 this
template <class ForwardIt, class Compare>
ForwardIt is_sorted_until(ForwardIt first, ForwardIt last, Compare comp)
{
if (first != last) {
ForwardIt next = first;
while (++next != last) {
if (comp(*next, *first))
return next;
first = next;
}
}
return last;
}
并在 while (++next != last)
- 左侧是否先于右侧评估?
顺序未指定,like most binary operators in C++。编译器首先评估 ++next
或 last
是完全合法的,因此如果 next
和 last
是对同一基础变量的引用,您将进入未定义的行为领域(在这种情况下,没有问题)。