首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >作为参数传递的+=运算符

作为参数传递的+=运算符
EN

Stack Overflow用户
提问于 2019-07-23 06:43:31
回答 1查看 54关注 0票数 0

我有以下片段:

代码语言:javascript
复制
#include <iostream>

void test(int arg_1, int arg_2, int arg_3, int arg_4)
{
    std::cout << arg_1 << ", " << arg_2 << ", " << arg_3 << ", " << arg_4 << std::endl;
}

我运行了以下场景,但我无法理解它们。请解释一下。

案例-1:

代码语言:javascript
复制
int i;
i = 200;
test(i, i, i, i);

案例1-产出:

代码语言:javascript
复制
200, 200, 200, 200

案例-2:

代码语言:javascript
复制
int i;
i = 200;
test(i++, i++, i++, i++);

案例2-产出:

代码语言:javascript
复制
203, 202, 201, 200

案例-3:

代码语言:javascript
复制
int i;
i = 200;
test(i++, i+=10, i++, i++);

案例3-产出:

代码语言:javascript
复制
212, 213, 201, 200

案例-4:

代码语言:javascript
复制
int i;
i = 200;
test(i++, i++, i+=10, i++);

案例4-产出:

代码语言:javascript
复制
212, 211, 213, 200

案例-5:

代码语言:javascript
复制
int i;
i = 200;
test(i++, i++, i++, i+=10);

案例-5-产出:

代码语言:javascript
复制
212, 211, 210, 213

案例-6:

代码语言:javascript
复制
int i;
i = 200;
test(i++, i+=10, i++, i+=1);

案例-6-产出:

代码语言:javascript
复制
212, 213, 201, 213

案例1只是供参考,而案例2则很容易理解。但是从案例3到案例6;我不知道发生了什么。请解释一下这种行为。

此外,对此类行为是否有任何官方文件/参考文件?

EN

回答 1

Stack Overflow用户

发布于 2019-07-23 06:46:42

简短的回答是:

任何表达式的任何部分的求值顺序,包括函数参数的求值顺序,都是未指定的

请参阅以下内容:

order

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57158121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档