这是我的第一篇文章,也是我第一次使用C++。我正在查看我从互联网上获得的一些代码,但我对此有疑问。省略循环值
它有一个for循环,像这样:
for(cin >> t;t--;)
我明白它在做什么,但我不明白的条件是什么。
根据这种格式,for (init; condition; increment)
,t--
是条件,但没有多大意义。我认为t--
是增量,但为什么它是第二个参数?
不应该是这样的:for (cin >> t; ;t--);
?
这是我的第一篇文章,也是我第一次使用C++。我正在查看我从互联网上获得的一些代码,但我对此有疑问。省略循环值
它有一个for循环,像这样:
for(cin >> t;t--;)
我明白它在做什么,但我不明白的条件是什么。
根据这种格式,for (init; condition; increment)
,t--
是条件,但没有多大意义。我认为t--
是增量,但为什么它是第二个参数?
不应该是这样的:for (cin >> t; ;t--);
?
--
运算符是一个“递减和返回”运算符。由于它用作后减量,因此它返回t
,然后递减该值。
在C++中的一切,是从0不同的是true
,反之亦然所以基本上它等同于
t == 0
当然的事情将是在--t
情况不同,因为它会之前递减值,然后返回它(它会在一次迭代之前结束循环)。
for (init; condition; increment)
只是使用for循环的推荐方式。循环工作的真正方法是:
for(
<runs once before loop>;
<check before every iteration, loop if true/non-zero>;
<run after every iteration>)
谢谢,这是一个非常明确的方式来把它! – bex91 2013-03-21 02:16:59
't - '返回't'并同时设置't = t-1'。你在考虑前缀。因此,最后一次递减将是1到0的递减,返回1,最后一次持续循环't = 0'。 – Wug 2013-03-21 02:03:53
嗯,所以在状态位置,我们都在减少它的价值和评估条件? – bex91 2013-03-21 02:04:39
它不被评估,它被返回。这是一个数值,但在C++中,一个数字确实可能是一个条件。 – Jack 2013-03-21 02:05:05