2013-03-21 98 views
1

这是我的第一篇文章,也是我第一次使用C++。我正在查看我从互联网上获得的一些代码,但我对此有疑问。省略循环值

它有一个for循环,像这样:

for(cin >> t;t--;) 

我明白它在做什么,但我不明白的条件是什么。

根据这种格式,for (init; condition; increment),t--是条件,但没有多大意义。我认为t--是增量,但为什么它是第二个参数?

不应该是这样的:for (cin >> t; ;t--);

回答

2

--运算符是一个“递减和返回”运算符。由于它用作后减量,因此它返回t,然后递减该值。

在C++中的一切,是从0不同的是true,反之亦然所以基本上它等同于

t == 0 

当然的事情将是在--t情况不同,因为它会之前递减值,然后返回它(它会在一次迭代之前结束循环)。

+0

't - '返回't'并同时设置't = t-1'。你在考虑前缀。因此,最后一次递减将是1到0的递减,返回1,最后一次持续循环't = 0'。 – Wug 2013-03-21 02:03:53

+0

嗯,所以在状态位置,我们都在减少它的价值和评估条件? – bex91 2013-03-21 02:04:39

+0

它不被评估,它被返回。这是一个数值,但在C++中,一个数字确实可能是一个条件。 – Jack 2013-03-21 02:05:05

0

for (init; condition; increment)只是使用for循环的推荐方式。循环工作的真正方法是:

for(
    <runs once before loop>; 
    <check before every iteration, loop if true/non-zero>; 
    <run after every iteration>) 
+0

谢谢,这是一个非常明确的方式来把它! – bex91 2013-03-21 02:16:59