关于以下用法,我很困惑-i如何计算为true以及确定循环退出的时间:
while (--i) {
k = p[i];
p[i] = p[j = random() % B];
p[j] = k;
}
如果据我所知 - 前缀在开始循环之前递减i的值,那么我们是否正在评估true = value> 1和false = 0因此当值达到0时循环退出?也许我已经回答了我自己的问题,但是如果有人能够启发我的话。另外,如果递减运算符是后缀?
,这个循环将如何表现?答案 0 :(得分:4)
是,前缀减量将减少变量,然后表达式中返回的值(结果)用于条件。
当i
变为1
时,循环终止(并且它递减到0
,条件的返回值。)
答案 1 :(得分:1)
由于您已经定义了代码,我可以说它完全取决于i的值。 如果i = 0的值最初则会进入无限循环,因为 - i 将变为 -1 ,这将是真正的条件while循环。
所以如果i的值不是0(可能是正数或负数)那么它将始终为真,但是当它变为0时,循环将终止
和前缀&后缀...你应该记住,在( - 变量)或(++变量)的情况下,变量将先递增或递减然后检查但在(变量 - )或(变量++)情况下变量将在稍后递增或递减但先检查