众所周知,这会循环零:
while (x-- > 0) { /* also known as x --> 0 */
printf("x = %d\n", x);
}
But x = x--
yields 未定义的行为 https://stackoverflow.com/questions/4910248/is-y-x-x-1-undefined-behavior/.
这两个例子都需要一些“返回”值x--
,我猜这不存在。怎么会这样x-- > 0
已定义,但x = x--
is not?
因为在x = x--
你正在修改的值x
两次,没有中间序列点。所以操作顺序没有定义。在x-- > 0
的价值x
修改一次,明确评估结果x--
将是x
减量之前。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)