gpt4 book ai didi

c++ - c++中==运算符的结合性

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:59:16 24 4
gpt4 key购买 nike

我在 C++ 中有这段代码:

std::vector<int> v1;
std::vector<int> v2;
...
if (v1.insert(v1.end(), v2.begin(), v2.end()) == v1.end())
{
return 0;
}

首先计算哪个表达式?调试时,首先评估“==”运算符的右侧,这是正确的行为吗?

最佳答案

这与结合性无关(它在像 a == b == c 这样的表达式中发挥作用)。您要问的是运算符的操作数的评估顺序。除了一些明确列出的异常(exception)情况,这在 C++ 中是有意未指定的。这意味着无法保证 ab 将首先在 a == b 中被评估。

异常(exception)情况(保证评估顺序)是:

  • 函数调用的所有参数都在函数调用自身之前进行评估(但顺序未指定)。
  • 内置运算符||&& 的左侧首先求值(右侧是仅在必要时进行评估)。
  • 内置运算符的左侧先于右侧求值。
  • operator ?: 中的条件在结果之前求值,并且只求一个结果。

请注意,当重载这些运算符时,&&||, 的特殊属性将不再适用。这正是为什么重载这三个运算符是一个主意的原因。

关于c++ - c++中==运算符的结合性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42722024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com