首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对0-9连续顺序的数进行平方

对0-9连续顺序的数进行平方
EN

Stack Overflow用户
提问于 2021-09-06 16:37:02
回答 5查看 97关注 0票数 1

我是编程领域的新手。关于这个函数,我有一个基本的问题,这个函数是0-9的整数的平方。我知道发生了什么,直到我

代码语言:javascript
复制
std::cout << i << "   " << square << "\n";
i = i + 1;

我不太确定这是如何导致输出按照从0到9的顺序平方结果的。有人能解释一下这行代码背后的原因吗?以下是此函数的代码。

代码语言:javascript
复制
#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; 
} 
EN

Stack Overflow用户

发布于 2021-09-06 17:24:14

在注释中,您声明您不知道数学方程和赋值语句之间的区别。你并不孤单。

我将尝试解释,作为对现有答案的补充,以提供不同的角度。

首先,有两个数学方程式的例子:

代码语言:javascript
复制
     x = 1 +1
   y+1 = x*2

为了说明它们的含义,让我指出,你首先可以确定x是2,第二步是y是3。

下面是赋值语句的示例。

代码语言:javascript
复制
x = 1 +1;
y = x*2;

最小的区别是末尾的;,它告诉您这是一个程序代码行。

在这里,第一个看起来与第一个方程示例几乎相同。但对于C编译器来说,这是不同的。它是一个命令,请求程序在执行此行时将值2赋给变量x。

我制作的第二个赋值语句类似于第二个方程示例,但重要的是不同,因为=的左侧不是一个表达式,不是要计算的东西。方程式转换的语句

代码语言:javascript
复制
y +1 = x*2;

不起作用,编译器会抱怨它不能给表达式赋值(在右边做一点计算没有问题)。它不能将值4赋给表达式y+1

这有助于解决您的问题,因为您需要理解这两行

代码语言:javascript
复制
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时,循环就结束了。

现在从另一个角度来看。

如果你试着解这个方程

代码语言:javascript
复制
i = i + 1

对于i来说,你应该听到你的数学老师在抱怨。

你可以从两边减去i,得到

代码语言:javascript
复制
0 = 1

解决方法是“不要尝试”,而不是一个等式。

票数 2
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69077835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档