【发布时间】:2021-07-04 08:13:39
【问题描述】:
#include <bits/stdc++.h>
using namespace std;
int fun()
{
static int num = 16;
return num--;
}
int main()
{
for(fun(); fun(); fun())
cout<< fun()<<" ";
return 0;
}
Output : 14 11 8 5 2
for 循环的条件(表达式-2)如何工作?我的意思是,为什么当 fun 返回 0(num 变为 -1)时它会终止?
【问题讨论】:
-
int 转换为 bool 时,0 变为 false,其他任何值变为 true。 > C++14 §4.12/1 “零值、空指针值或空成员指针值被转换为假;
-
#include
不是真正的头文件,请不要使用这个 -
for循环可以转换为while循环。像for (A; B; C) { D; }这样的for循环将是A; while (B) { D; C; }。在您的具体情况下,它将是fun(); while (fun()) { fun(); fun(); }。它可能更容易跟随并查看正在发生的事情。并且更容易使用 调试器 逐句逐句执行代码。 -
我相信这实际上是基本的“
for循环如何工作?”的重复。题。简而言之,您可以将for替换为伪代码,这样对于不熟悉它的人来说,它的功能会更加清晰。 ETA:基本上是@Someprogrammerdude 所说的 -
如果您问为什么
num初始化为 17,但以 16 正确终止,这将是一个更有趣的问题。