Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
无法解释以下程序的输出。据我所知,输出应该是 19,但运行它会给我 20 的输出。我使用 gcc 编译这个程序。
int main() { int x, y = 5; x = ++y + ++y + --y; printf("%d", x); return 0; }
y当您在两个序列点(在您的情况下,语句的结尾)之间多次修改时,您的程序会利用未定义的行为。如果你用 开启警告-Wall,你的编译器甚至可能会警告你。
y
-Wall
6+7+6 = 19 所以 19 将是你的输出