使用分配值的表达式返回的值初始化变量是否为未定义行为?

问题描述 投票:0回答:3

以下代码是标准未定义的吗?

int fingers = 10;
int more = (fingers = 10);
// or 
// int more = fingers = 10;

与上述相同的答案是否适用于

std::map

std::map<int, int> arms;
int bicep = (arms[200] = 10);
c++ undefined-behavior
3个回答
0
投票
  1. 是的。当您将变量设置为值时,该值将在表达式中返回。
  2. 是的,它也适用于地图。

0
投票

以下代码是标准未定义的吗?

不,代码格式良好。内置赋值

operator=
通过引用返回左侧操作数,然后将其用作
more
的初始值设定项。


0
投票

=
是一个与其他运算符一样的运算符。与其他运算符一样,它有一个明确定义的返回值 - 它刚刚分配的值。您的代码中没有任何未定义的内容。

© www.soinside.com 2019 - 2024. All rights reserved.