阅读一些主题我发现了这段代码,我想知道它是如何工作的,因为它打印:
5
2
编码:
static int a = 7;
int test()
{
return a--;
}
int main()
{
for(test();test();test())
{
cout << test() << "\n";
}
return 0;
}
操作顺序,如图所示:
a
在启动时全局初始化。到 7test()
递减a
到6,然后返回先验值(7),忽略。test()
递减a
到5,然后返回通过非零测试的先前值(6),以便for循环可以继续。cout
声明;test()
递减到 4,返回发送到a
的先前值(5)cout
。test()
递减a
到 3,返回先前值 (4),该值被忽略。test()
递减a
到 2,返回先前的值 (3),它通过了非零测试并且循环继续。cout
声明;test()
递减到 1,返回发送到a
的先前值(2)cout
。test()
递减a
到 0,返回先前的值 (1),该值被忽略。test()
递减a
到 -1,返回先前值 (0),该值未通过非零测试并且循环终止。现在。在 6 点或 8 点开始循环,看看会发生什么。=P
形式的for
循环:
for (a; b; c) {
// stuff
}
相当于:
{
a;
while (b) {
// stuff
c;
}
}