使用后增量构造带有变量的std ::整数对

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

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

1 2
2 3
3 4

同时使用std::make_pair和构造函数:

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

但是,这导致配对相反:

2 1
3 2
4 3

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

为什么会这样显示?

c++ std-pair post-increment
1个回答
0
投票

这必须执行order of evaluation。来自cppreference.com

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

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