C后增加情况

时间:2012-04-12 14:26:18

标签: c loops do-while post-increment

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

应首先执行说明,然后检查x是否不是0并根据结果继续/或离开循环,并且仅在所有这些操作减少后 { {1}}。

但我的编译器先减少

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

3 个答案:

答案 0 :(得分:3)

你在说什么

  

应首先执行说明,然后检查'x'是否不是'0'并继续   根据结果​​打开/或离开循环,仅在所有这些之后   运作减去'x'

应该是什么

  

应首先执行说明,然后检查“x”是否不为“0”   DECREMENT'x'并根据结果继续/或离开循环

答案 1 :(得分:3)

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

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

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

答案 2 :(得分:1)

流程是:

1)做指示

2)检查x的值

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

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