在将变量作为输入之前使用变量定义其他变量
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。
在下面的代码中,我最初定义了 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。