首页 > 解决方案 > 使用后增量构造带有变量的整数对 std::pair

问题描述

我尝试构造整数对,其中第二个整数大于第一个整数1

1 2
2 3
3 4

像这样使用两者std::make_pair和构造函数:

std::make_pair(n, n++);

但是,这会导致对是相反的:

2 1
3 2
4 3

如果我要将后增量放在第一个参数上或(n+1)改为使用,我会得到所需的结果。

为什么它会这样?

标签: c++functionstd-pairpost-incrementfunction-parameter

解决方案


这与评估的顺序有关。来自cppreference.com

未指定任何表达式的任何部分的求值顺序,包括 函数参数的求值顺序。编译器可以 按任何顺序计算操作数和其他子表达式,并且可以在 再次计算同一表达式时选择另一个顺序。

因此,不能保证先评估n 还是n++先评估。


推荐阅读