This question already has answers here:
Why are these constructs using pre and post-increment undefined behavior?
(14个回答)
6年前关闭。
答案是45.I无法理解这件事是如何工作的。
(14个回答)
6年前关闭。
答案是45.I无法理解这件事是如何工作的。
main()
{
int a =10;
int i = a++ + ++a + a++ + ++a;
printf("%d , %d ", i,a);
}
最佳答案
实际上输出是undefined behavior
很好。
根据C99标准,有6.5个表达式,§2
在上一个和下一个序列点之间,对象应具有其
通过对表达式的求值,存储值最多只能修改一次。
此外,先前值应只读以确定该值
要存储。
未指定操作数的评估顺序。如果尝试
用于修改赋值运算符的结果或对其进行访问
在下一个序列点之后,行为是不确定的。
关于c - 发布增量,预增量和运算符优先级,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18515351/
10-14 19:19