当我遇到这个问题时,我正在阅读我的教科书
起初我认为这是未定义的行为,因为a已被多次修改.
那么我就读了这个问题并说它提到了步骤所以我可能认为这个问题是正确的.
所以我的问题是:
注意:一个解释清楚的答案将得到我的投票
我最近在C中学到了未定义的行为,但是这个特定的代码在一个站点中用作"逗号作为运算符"的示例,虽然我理解第2行中的y = x ++,但我不明白子表达式的顺序在第2行进行评估.我认为这是未定义的行为,但我不确定,因为该网站没有提及任何内容.
int main()
{
int x = 10, y;
y = (x++, printf("x = %d\n", x), ++x, printf("x = %d\n", x), x++);
printf("y = %d\n", y);
printf("x = %d\n", x);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
x = 11
x = 12
y = 12
x = 13
Run Code Online (Sandbox Code Playgroud)