c++;赋值的参数求值顺序? 在C++中,不保证顺序的参数求值,但保证了赋值表达式左右/次表达式的顺序吗?比如说 #include <iostream> #include <map> int main() { int i = 2; std::map<int, int> map; map[i++] = i--; return 0; } #包括 #包括 int main() { int i=2; 地图; map[i++]=i--; 返回0; }

c++;赋值的参数求值顺序? 在C++中,不保证顺序的参数求值,但保证了赋值表达式左右/次表达式的顺序吗?比如说 #include <iostream> #include <map> int main() { int i = 2; std::map<int, int> map; map[i++] = i--; return 0; } #包括 #包括 int main() { int i=2; 地图; map[i++]=i--; 返回0; },c++,C++,左表达式i++是否保证在右表达式i--之前执行?您问: 左表达式i++是否保证在右表达式i--之前执行 不,不是 线路 map[i++] = i--; 最终可能是 map[2] = 3; 或 取决于赋值运算符的哪一侧首先求值 然而,由于该行调用了未定义的行为,正如@juanchopanza在评论中指出的那样: map[42] = -999; 我们真的还需要这个问题吗?@LightnessRacesinOrbit好吧,你手里也有受骗锤,你可以用它:-)@Angew:这是第120次费心去找受骗

左表达式
i++
是否保证在右表达式
i--
之前执行?

您问:

左表达式i++是否保证在右表达式i--之前执行

不,不是

线路

map[i++] = i--;
最终可能是

map[2] = 3;

取决于赋值运算符的哪一侧首先求值

然而,由于该行调用了未定义的行为,正如@juanchopanza在评论中指出的那样:

map[42] = -999;

我们真的还需要这个问题吗?@LightnessRacesinOrbit好吧,你手里也有受骗锤,你可以用它:-)@Angew:这是第120次费心去找受骗者hour@LightnessRacesinOrbit我在浏览器的书签工具栏中保留了一些常见问题解答,这很有帮助。或者它可能最终成为
map[42] = -999;因为它是未定义的行为。
map[42] = -999;