我是编程领域的新手。关于这个函数,我有一个基本的问题,这个函数是0-9的整数的平方。我知道发生了什么,直到我
std::cout << i << " " << square << "\n";
i = i + 1;我不太确定这是如何导致输出按照从0到9的顺序平方结果的。有人能解释一下这行代码背后的原因吗?以下是此函数的代码。
#include <iostream>
int main() {
int i = 0;
int square = 0;
while ( i <= 9) {
square = i*i;
std::cout << i << " " << square << "\n";
i = i + 1;
}
return 0;
} 发布于 2021-09-06 16:44:52
这段代码:
std::cout << i << " " << square << "\n";
i = i + 1;并不能解决任何问题。它只是输出已经计算出的当前平方,然后为下一次循环迭代递增i。
实际的平方发生在这里:
square = i*i;因此,代码从i=0开始,计算square=0*0并显示它,然后设置i=1,计算square=1*1并显示它,然后设置i=2,计算square=2*2并显示它,依此类推,直到i超过9,然后循环停止。
发布于 2021-09-06 16:52:30
std::cout << i << " " << square << "\n";将每个数字i打印到它的正方形旁边,这是以前计算的,std::cout << i << " " << square << "\n";递增i来计算下一个正方形。它在i到达10.时停止
输出将如下所示:
0 0
1 1
2 4
3 9
4 16
5 25
6 36
7 49
8 64
9 81发布于 2021-09-06 16:57:29
让我们从头开始,看看发生了什么,我将忽略前几行,从以下几行开始:
int i = 0;
int square = 0;你看,当你说int i;的时候,你的编译器会说我需要分配存储桶来保存i的值。当你说i = 0 0被放入那个内存桶时。这也是square正在发生的事情。
现在循环
while ( i <= 9 ) {
square = i*i;
std::cout << i << " " << square << "\n";
i = i + 1;
}所以,让我们忽略
square = i*i;
std::cout << i << " " << square << "\n";现在,我们将在稍后讨论它。
所以
while ( i <= 9 ) {
i = i + 1;
}进入循环并从i的存储桶中获取值,添加1并将新值放入i的存储桶中。因此,在第一个循环中,它将为i = 0 + 1,将1放入i存储桶中。其次,i = 1 + 1将2放入,第三个代码放入< i = 2 + 1 >d17i = 2 + 1>。
所以让我们回到square和它的存储桶。
square = i*i;因此,第一次进入循环时,i = 0和square = 0 * 0编译器将0放入square的内存桶中。下一次命中square时,i已递增为1,因此square = 1 * 1,因此编译器将1放入桶中。第三次i是2所以square = 2 * 2,编译器将4放入桶中,依此类推,直到i <= 9。当i命中10时,不执行循环。
https://stackoverflow.com/questions/69077835
复制相似问题