C++中while(x--)是什么意思

Anu*_*ran 4 c++ loops

我刚刚开始使用竞争性编程,并一直使用如下所示的循环来定义大多数练习问题中的测试用例数量。

for(int i=1;i<=t;i++)
{
...
}
Run Code Online (Sandbox Code Playgroud)

但是,我见过有人使用 while 循环,它的条件 (t--)也运行得很好。有人可以向我解释这种情况实际上是如何工作的吗?它是否与 相同while(t!=0),但不是在循环中减少后面的值,而是在这里进行?

Gom*_*bat 8

是的。

int t = 5;
while(t--){...}
Run Code Online (Sandbox Code Playgroud)

运行循环,直到t0检查它的价值时,因为0同样是false在一个合理的范围内。

因为t--是后递减运算符 on twhile检查后会修改其值,所以最后为-1。因此,t循环内部的值将是:4,3,2,1,0。

但它在循环范围之外创建了一个额外的变量 - 所以我更喜欢for循环。

  • 有人可能会争辩说它运行循环直到 t 为 -1。 (3认同)

Sin*_*all 7

while循环体反复执行,直到其条件的值变为假(注意,如果条件最初为假,则循环根本不会执行)。条件测试在每次执行循环体之前进行。现在,假设你有这个:

int x = 5;
while(x--)
{
    cout << x;
}
Run Code Online (Sandbox Code Playgroud)

每次迭代都会评估和检查 while 循环的条件false。由于我们使用了postfix decrement,所以x会先被使用(即check forfalse来打破循环),然后再减少,也就是说上面的循环会打印43210,然后结束。

值得注意的是,循环结束后,的值为x-1。