小编Sim*_*mca的帖子

在同一行使用变量时的预自增运算符

我相信我想做的事情可能是有效的,因为它在两种情况下都用逗号分隔(不是典型的作业),但我不确定并且搜索不会显示有关这两个的任何内容具体情况。

在这两种情况下,我都使用变量作为两个并行数组的索引。

int a[3] = {10, 20, 30};
int b[3] = {20, 40, 60};
Run Code Online (Sandbox Code Playgroud)

情况#1:初始化数组的结构

struct testStruct {
     int t1;
     int t2;
};
int i = 0;
testStruct test = {a[++i], b[i]}
Run Code Online (Sandbox Code Playgroud)

最终行的预期结果:test = {20, 40}

情况#2:将数组中的特定值作为函数参数传递

void testFunc(int t1, int t2) {
    // do stuff
}
int i = 0;
test(a[++i], b[i]);
Run Code Online (Sandbox Code Playgroud)

最终行的预期结果:test(20, 40)

这是有效的代码吗?如果是,它在所有编译器中都有效吗?

结果是我期望的吗?如果是这样,是因为数组还是因为逗号?

谢谢!

c++ undefined-behavior pre-increment

5
推荐指数
1
解决办法
1752
查看次数

标签 统计

c++ ×1

pre-increment ×1

undefined-behavior ×1