1
do {instructions...}
while (x--)

应该首先执行说明,然后检查是否x不是,然后0根据结果继续/或离开循环,并且只有在所有这些操作减量之后 x

但我的编译器先递减

谁错了?我或我的编译器;-)?你能解释一下为什么吗?

4

3 回答 3

3

C 中的许多表达式都有副作用

对于表达式x--x之前的值;副作用是递减x的值。

因此,如果您从x1 开始,当执行到达该表达式时,它将产生 1并设置x为 0。下一次计算表达式时,该0x设置为-1, ...

于 2012-04-12T14:49:58.723 回答
3

你在说什么

应该首先执行指令,然后检查'x'是否不是'0'并根据结果继续/或离开循环,并且仅在所有这些操作减量'x'之后

应该是什么

应该首先执行指令,然后检查'x'是否不是'0',然后减量'x'并根据结果继续/或离开循环

于 2012-04-12T14:33:02.783 回答
1

流程是:

1)做指令

2) 检查 x 的值

3.1) 是 x == 0?然后执行 x-- (x 变为 -1) 并退出循环

3.2) 是 x != 0 吗?然后执行 x-- 并转到步骤 1)

于 2012-04-12T14:32:29.230 回答