可能重复:
任何人都可以解释这些未定义的行为(i = i++ + ++i,i = i++ 等......)
未定义的行为和序列点
好的,我们都知道 i++ 在下一行将值递增 1 并且 ++i 在同一行递增
(如果我在那里错了请纠正我)
,因此对于 c 的示例语句如下:
int a=0;
printf("%d , %d",++a,a);
预期的输出应该是1 , 1
,但它会给出1 , 0
,所以人们可能会猜到我在这里要问的是为什么第二次链接
i
打印0
而不是1
当值已经增加时。
因此,如果后增量没有在同一行中增加值,那么后增量和前增量之间有什么区别?
编辑:将变量的名称从 i 更改为 a 以避免语法混乱。