C ++中[in]相等运算符的评估顺序?

Posted

技术标签:

【中文标题】C ++中[in]相等运算符的评估顺序?【英文标题】:Order of evaluation of [in]equality operator in C++? 【发布时间】:2019-05-28 20:05:34 【问题描述】:

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) - 左侧是先于右侧评估吗?

【问题讨论】:

【参考方案1】:

订单未指定,like most binary operators in C++。编译器首先评估 ++nextlast 是完全合法的,所以如果 nextlast 是对同一个基础变量的引用,您将进入未定义的行为区域(在这种情况下,没有问题)。

【讨论】:

以上是关于C ++中[in]相等运算符的评估顺序?的主要内容,如果未能解决你的问题,请参考以下文章

R - 使用匹配运算符时保留顺序 (%in%)

循环条件中的三元运算符:评估顺序/操作。优先级不明确

如果我理解正确:C# 等式运算符 ( == ) 和操作数的顺序

C语言里面的运算符优先顺序如何?

C语言运算顺序

C# 7.2 对运算符使用“in parameter”