答案显示为45.我无法理解这件事是如何运作的。
main()
{
int a =10;
int i = a++ + ++a + a++ + ++a;
printf("%d , %d ", i,a);
}
答案 0 :(得分:3)
实际上输出是undefined behavior
,这很好。
根据C99标准,6.5表达式,§2
在前一个和下一个序列点之间,一个对象应该具有它 通过表达式的评估,最多修改一次存储值。 此外,先前的值应只读以确定该值 存储。
未指定操作数的评估顺序。如果尝试 用于修改赋值运算符的结果或访问它 在下一个序列点之后,行为未定义。