我是编程领域的新手。关于这个函数,我有一个基本的问题,这个函数是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 17:24:14
在注释中,您声明您不知道数学方程和赋值语句之间的区别。你并不孤单。
我将尝试解释,作为对现有答案的补充,以提供不同的角度。
首先,有两个数学方程式的例子:
x = 1 +1
y+1 = x*2为了说明它们的含义,让我指出,你首先可以确定x是2,第二步是y是3。
下面是赋值语句的示例。
x = 1 +1;
y = x*2;最小的区别是末尾的;,它告诉您这是一个程序代码行。
在这里,第一个看起来与第一个方程示例几乎相同。但对于C编译器来说,这是不同的。它是一个命令,请求程序在执行此行时将值2赋给变量x。
我制作的第二个赋值语句类似于第二个方程示例,但重要的是不同,因为=的左侧不是一个表达式,不是要计算的东西。方程式转换的语句
y +1 = x*2;不起作用,编译器会抱怨它不能给表达式赋值(在右边做一点计算没有问题)。它不能将值4赋给表达式y+1。
这有助于解决您的问题,因为您需要理解这两行
i = i + 1;
square = i*i;是一些语句,在执行时(也只有在执行时)会导致该行中变量的值发生变化。
您的程序从变量i中的值0开始。在某个时刻,它执行上面的第一条语句,导致i的值从0变为1。随后,当再次执行同一行时,i的值从1变为2。因此,i的值随着循环迭代而变为2,3,4,5,6,7,8,9
第二个赋值行导致square的值变成i的值,无论它在循环迭代期间是什么值并乘以它自己。也就是说,它会变成4,9,16,25,36....
每次在循环中输出square的值都会得到正方形。
既然你说你基本上理解了循环,我只提到当i不再小于或等于9时,循环就结束了。
现在从另一个角度来看。
如果你试着解这个方程
i = i + 1对于i来说,你应该听到你的数学老师在抱怨。
你可以从两边减去i,得到
0 = 1解决方法是“不要尝试”,而不是一个等式。
https://stackoverflow.com/questions/69077835
复制相似问题