众所周知,这个从零开始循环:
while (x-- > 0) { /* also known as x --> 0 */
printf("x = %d\n", x);
}
但是 x = x--
产生 undefined behaviour .
这两个示例都需要一些 x--
的“返回”值,我猜这不存在。怎么可能 x--> 0
被定义而 x = x--
没有呢?
最佳答案
因为在 x = x--
中,您正在两次修改 x
的值,而没有插入序列点。所以操作顺序没有定义。在x--> 0
中,修改了一次x
的值,明确定义了x--
的求值结果为递减前 x
的值。
关于c - 为什么 `x--> 0` 不是未定义的行为,而 `x = x--` 是?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4924376/