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++。编译器首先评估 ++next
或 last
是完全合法的,所以如果 next
和 last
是对同一个基础变量的引用,您将进入未定义的行为区域(在这种情况下,没有问题)。
【讨论】:
以上是关于C ++中[in]相等运算符的评估顺序?的主要内容,如果未能解决你的问题,请参考以下文章
C语言一堆数组中存放了10个小于100的整数,请编程对所有数据按照从小到大的顺序进行排序,若个位数相等,则按照十位从小到大的顺序排序,输出排序后的结果