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