【发布时间】:2017-12-28 23:07:09
【问题描述】:
我最近了解了 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;
}
输出:
x = 11
x = 12
y = 12
x = 13
【问题讨论】:
-
逗号运算符从左到右求值
-
@EdHeal 这段代码不是他写的,网上找的,想看懂。没有理由不礼貌。
-
请发布指向您找到此“代码”的网站的链接,以便 SO 的未来用户避免使用它。
-
链接到网站?
标签: c undefined-behavior comma-operator