c++ - 使用后增量构造带有变量的整数对 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)
改为使用,我会得到所需的结果。
为什么它会这样?
解决方案
这与评估的顺序有关。来自cppreference.com
未指定任何表达式的任何部分的求值顺序,包括 函数参数的求值顺序。编译器可以 按任何顺序计算操作数和其他子表达式,并且可以在 再次计算同一表达式时选择另一个顺序。
因此,不能保证先评估n
还是n++
先评估。
推荐阅读
- perl - Strawberry Perl 和 PAR - 其他 Windows 机器上的运行时错误:如果安装了 LWP::Protocol::https 模块,LWP 将支持 https URL
- angular - 角度 RXJS 中的链接动作
- c# - WCF 客户端混淆
- amazon-sagemaker - 如何在 SageMaker 培训作业脚本中获取当前作业名称?
- java - 选定的活动页面不断跳回主活动页面。我该如何阻止这种情况发生?
- html - nth-of-type, first-child 不能正常工作
- android - 启用自动填充时,不会使用 Smart Lock API 保存凭据以获取密码
- html - 找不到您的页面(HTML,引导程序 4)
- java - 我可以更改 JMSMessageID 以保证它是唯一的吗?
- forms - 带有 Twig 的自定义字段