这个C代码仍然没有定义输出吗?

Aar*_*ken 2 c

我正在阅读C陷阱和陷阱,并读到以下代码可能对某些实现起作用,而不会由于=和++的未定义顺序而导致其他实现.C仍然如此吗?

int i = 0;
while (i < n)
    y[i] = x[i++];
Run Code Online (Sandbox Code Playgroud)

如果是这样,那真的很不可思议.

And*_*rey 5

没有什么不可思议的.相当明确的未定义行为.了解更多关于序列点.只写作:

int i = 0;
while (i < n)
{
    y[i] = x[i];
    i++;
}
Run Code Online (Sandbox Code Playgroud)

更安全,更易读.