- 已关闭**。此问题需要details or clarity。当前不接受答案。
- 想要改进此问题?**添加详细信息并通过editing this post阐明问题。
16小时前关门了。
Improve this question
#include <stdio.h>
int main() {
int y = 3;
int z = (--y) + (y = 10);
printf("%d", z);
return 0;
}
我已经尝试了所有的编译器,但输出是20
。如何?
1条答案
按热度按时间toiithl61#
您的代码不会编译,但假设您在代码中将
y
定义为int
,并且忘记粘贴该定义,则该代码具有未定义的行为,因为您在同一表达式的两个不同位置读取和修改了y
,而没有序列点。该行为是未定义的,因此尝试解释输出是没有意义的。