在将变量作为输入之前使用变量定义其他变量

Using a variable to define other variable before taking it as input

在下面的代码中,我最初定义了 n 和 k,然后如果我在使用 cin 将 k 作为输入后将 n 定义为 k/2,代码是成功的,但是如果我定义 n= k/2 在 cin 函数之前我得到一个无限循环作为输出?请说明为什么在 cin 函数下方或之后定义会影响输出。

#include <iostream>
using namespace std;
int main () {
cout<< "how many asterisks you want in the middle column:";
int n,k;
// n=k/2 ; 
cin>>k;
// n=k/2;

//some code involving n
return 0;
 }

语句的顺序不同:

int k = 2;
int n = k/2;
k = 4;

不同于

int k = 2;
k = 4;
int n = k/2;

在第一种情况下,您得到 n = 1,在第二种情况下,您得到 n = 2。这 真的 不应该让您感到惊讶!如果确实如此,您可能需要在处理循环之前修改您的编程基础:)

其他:

  • 永远不要使用 using namespace std;。不这样做,但特别是只导入你需要的东西会为你以后节省 很多 的时间,调试非常奇怪的问题(我不知道为什么仍然教这个):using std::cin;, using std::cout; 可能更长,但更好,因为你知道你的名字 space!
  • 正确缩进代码。是的,你的编辑器有这个功能,如果没有,换一个更好的编辑器(这些东西 确实 有所作为,特别是对于初学者来说,因为它们可以帮助你发现很少的东西错别字容易多了!)。许多初学者喜欢 Code::blocks 作为编辑器,因为它易于设置而且很好,其他人则喜欢更强大的 VS Code。