gpt4 book ai didi

c++ - 在表达式 left() = right() 中,为什么 right() 先排序?

转载 作者:IT老高 更新时间:2023-10-28 23:03:39 29 4
gpt4 key购买 nike

在 C++ 中,表达式 left() = right() 求值

  1. right()
  2. left()

按那个顺序。 right() 先行,正如已讨论过的 here.

我想不出让 right() 先走的理由。你能?我想是有原因的。否则,标准几乎不会说出它所说的内容,但请考虑: right() 将返回一些结果。在机器代码级别,CPU 是否不需要知道将结果 right() 将返回的位置放在哪里,然后才要求 right() 返回它?

如果您碰巧知道标准委员会的想法(因为您在 session 室中或已阅读备忘录),那就太好了:我想阅读您的回答。但是,我的实际问题更为温和。我只想知道是否存在一个似是而非的理由以及这个理由可能是什么。

最佳答案

在提案中P0145介绍了这种评估顺序,作者给出了以下示例:

#include <map>
int main() {
std::map<int, int> m;
m[0] = m.size();
}

在这种情况下,从左到右的评估会给出 1,而从右到左的评估会给出 0。由于从右到左的评估,结果为 0,更接近于我们的直觉:应该分配的值是在评估赋值表达式之前立即存在的值​​。

关于c++ - 在表达式 left() = right() 中,为什么 right() 先排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55387065/

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