do {instructions...}
while (x--)
应首先执行说明,然后检查x
是否不是0
并根据结果继续/或离开循环,并且仅在所有这些操作减少后 { {1}}。
但我的编译器先减少。
谁错了?我或我的编译器;-)?你能解释一下为什么吗?
答案 0 :(得分:3)
你在说什么
应首先执行说明,然后检查'x'是否不是'0'并继续 根据结果打开/或离开循环,仅在所有这些之后 运作减去'x'
应该是什么
应首先执行说明,然后检查“x”是否不为“0” DECREMENT'x'并根据结果继续/或离开循环
答案 1 :(得分:3)
C中的许多表达式都有值和副作用。
对于表达式x--
,值是之前的值x
;副作用是递减x
的值。
因此,如果您从x
开始为1,当执行到达该表达式时,它将产生值 1
并将x
设置为0 。下次评估表达式时,值为0
,x
设置为-1
,...
答案 2 :(得分:1)
流程是:
1)做指示
2)检查x的值
3.1)是x == 0?然后做x--(x变为-1)并退出循环
3.2)是x!= 0?然后做x--并转到步骤1)