C中的运算符优先级

时间:2013-02-23 16:49:33

标签: c gcc operators

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

int main()
{ 

    int x, y = 5;

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

    return 0;
}

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:-6)

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