首页 > 解决方案 > 这段代码发生了什么。有人可以解释一下吗?

问题描述

请有人解释一下这段代码发生了什么。我的意思是我不明白。这是源代码。

#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

提前致谢!

标签: c++

解决方案


好吧,我将逐行解释。

在 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 .

在上面的评论中,有人提到这是斐波那契数列,如果你不知道,这对谷歌来说是一个有趣的话题。


推荐阅读