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]相等运算符的评估顺序?的主要内容,如果未能解决你的问题,请参考以下文章

在C中调用函数之前的参数评估顺序[重复]

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

为啥这些 C++ STL 无序集不被视为相等?

解析ELEC129 Programming in C

C语言一堆数组中存放了10个小于100的整数,请编程对所有数据按照从小到大的顺序进行排序,若个位数相等,则按照十位从小到大的顺序排序,输出排序后的结果

C语言顺序查找程序