阅读一些主题我发现了这段代码,我想知道它是如何工作的,因为它是真的:
5
2
Run Code Online (Sandbox Code Playgroud)
代码:
static int a = 7;
int test()
{
return a--;
}
int main()
{
for(test();test();test())
{
cout << test() << "\n";
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Who*_*aig 13
运作顺序如下:
a在启动时全局初始化.到7test()递减a到6,然后返回先前的值(7),这将被忽略.test()递减a到5,然后返回通过非零测试的先前值(6),以便for循环可以继续.cout声明; test()递减a到4,返回发送到的先前值(5)cout.test()递减a到3,返回先前的值(4),这将被忽略.test()递减a到2,返回先前值(3),该值通过非零测试并继续循环.cout声明; test()递减a到1,返回发送到的先前值(2)cout.test()递减a到0,返回先前值(1),忽略该值.test()递减a到-1,返回先前值(0),这会使非零测试失败并且循环终止.现在.从6或8开始循环,看看会发生什么.= P
Oli*_*rth 12
for形式的循环:
for (a; b; c) {
// stuff
}
Run Code Online (Sandbox Code Playgroud)
相当于:
{
a;
while (b) {
// stuff
c;
}
}
Run Code Online (Sandbox Code Playgroud)