无法解释以下程序的输出。根据我的知识,输出应该是19,但运行它给我输出20.我使用gcc编译这个程序。
int main()
{
int x, y = 5;
x = ++y + ++y + --y;
printf("%d", x);
return 0;
}
答案 0 :(得分:2)
当您在两个序列点之间多次修改y
时(在您的情况下,语句的结尾),您的程序会利用未定义的行为。如果您使用-Wall
打开警告,您的编译器甚至可能会警告您。
答案 1 :(得分:-6)
6 + 7 + 6 = 19 所以19将是你的输出