无法解释以下程序的输出。据我所知,输出应该是 19,但是运行它给出的输出是 20。我使用 gcc 来编译这个程序。
int main()
{
int x, y = 5;
x = ++y + ++y + --y;
printf("%d", x);
return 0;
}
最佳答案
当您在两个序列点(在您的情况下是语句末尾)之间多次修改 y
时,您的程序会利用未定义的行为。如果您使用 -Wall
打开警告,您的编译器甚至可能会就此发出警告。
关于c - C 中的运算符优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15042970/