将前缀减少为c while循环中的条件

时间:2012-11-23 03:03:31

标签: c while-loop

关于以下用法,我很困惑-i如何计算为true以及确定循环退出的时间:

while (--i) {
    k = p[i];
    p[i] = p[j = random() % B];
    p[j] = k;
}

如果据我所知 - 前缀在开始循环之前递减i的值,那么我们是否正在评估true = value> 1和false = 0因此当值达到0时循环退出?也许我已经回答了我自己的问题,但是如果有人能够启发我的话。另外,如果递减运算符是后缀?

,这个循环将如何表现?

2 个答案:

答案 0 :(得分:4)

是,前缀减量将减少变量,然后表达式中返回的值(结果)用于条件。

i变为1时,循环终止(并且它递减到0,条件的返回值。)

答案 1 :(得分:1)

由于您已经定义了代码,我可以说它完全取决于i的值。 如果i = 0的值最初则会进入无限循环,因为 - i 将变为 -1 ,这将是真正的条件while循环。

所以如果i的值不是0(可能是正数或负数)那么它将始终为真,但是当它变为0时,循环将终止

和前缀&后缀...你应该记住,在( - 变量)或(++变量)的情况下,变量将先递增或递减然后检查但在(变量 - )或(变量++)情况下变量将在稍后递增或递减但先检查