c++ - 这段代码发生了什么。有人可以解释一下吗?
问题描述
请有人解释一下这段代码发生了什么。我的意思是我不明白。这是源代码。
#include <iostream>
using namespace std;
int main(){
int a = 0;
int c = 0;
for (int b = 1; b <= 144 ; b++){
a = b;
b = c;
c = a + b;
cout << a << "\n";
}
}
输出 :
1
1
2
3
5
8
13
21
34
55
89
144
提前致谢!
解决方案
好吧,我将逐行解释。
在 main() 之前
首先,include <iostream>
导入cout
函数以输出到终端。using namespace std;
就像一个缩短器并导入标准库。而不是std::cout
,现在你正在写作cout
。
在 main()
int main()
调用文件的主函数,该函数运行程序。int 关键字引用它应该返回一个整数值。
int a,c;
引用您声明 2 个变量,两个整数,命名为 a 和 c。
for 循环有多个参数:
int b = 1;
创建 for 循环在其下一个参数中使用的变量。b <= 144;
指定当 b 被修改时,如果它小于或等于 144,那么循环将继续执行。b++
意味着对于循环的每次迭代,您将 b 的值增加一。
这是第一次 for 循环迭代的示例,其中 b 值已填充:
a = 1; // a is now 1
b = c; // c hasn't exactly been defined, but it is an integer
c = a + 1; // or 1 + 0. c is now 2
在下一次迭代中,我将填写更多值:
a = 1; // b is 1 and a is set to b
b = 1; // b is set to c
c = 1 + 1;
现在,为什么 b 与上一次迭代相同?因为c在技术上是0,所以b被设置为0,循环结束后又增加了1,所以又回到了1。唯一的区别是c为1,将c的第二次迭代值设置为2 .
在上面的评论中,有人提到这是斐波那契数列,如果你不知道,这对谷歌来说是一个有趣的话题。
推荐阅读
- typescript - 返回类型中的打字稿条件泛型类型
- javascript - 调用和读取外部 JS 文件 - Angular
- python - tf.keras.losses 中“BinaryCrossentropy”和“binary_crossentropy”的区别?
- mysql - 如何在 SQL 中按记录类型获取最新记录
- angularjs - angularjs:http.post() 成功执行,但没有向服务器文件发布任何内容
- tinymce - Tinymce - 如何让用户知道快捷方式
- node.js - 如何使用另一个集合 moongoose 查找子查询文档
- python - 如果值为 X,Python 删除行
- ios - 使用 Airpods 录制立体声音频
- cors - CORS - 无法确定何时何地