-2

无法解释以下程序的输出。据我所知,输出应该是 19,但运行它会给我 20 的输出。我使用 gcc 编译这个程序。

int main()
{ 

    int x, y = 5;

    x = ++y + ++y + --y;
    printf("%d", x);

    return 0;
}
4

2 回答 2

2

y当您在两个序列点(在您的情况下,语句的结尾)之间多次修改时,您的程序会利用未定义的行为。如果你用 开启警告-Wall,你的编译器甚至可能会警告你。

于 2013-02-23T16:52:40.760 回答
-6

6+7+6 = 19 所以 19 将是你的输出

于 2013-02-23T16:53:08.967 回答