1

可能重复:
谁能解释这些未定义的行为(i = i++ + ++i,i = i++ 等……)

#include< stdio.h >

int main()
{
    int i = 1;
    int x = ++i * ++i * ++i;
    printf("%d\n", x);
    printf("%d\n\n",i);

    return 0;
}

我得到 1 的输出!!和 4 在 gcc 中。我用的是 ubuntu linux

4

2 回答 2

2

这是未定义的行为:

int x = ++i * ++i * ++i;

不要这样做!!!!

于 2011-06-07T09:55:09.477 回答
2

您的代码的行为未定义,因为i在序列点之间多次修改:

int x = ++i * ++i * ++i;

请参阅常见问题解答(我敦促您阅读整个第 3 部分)。

于 2011-06-07T09:55:52.967 回答