编译和执行以下代码时出现以下问题: 在while循环中,x1保持它的值。一旦"好的"输入并且while循环结束,x1将丢失其值并重置为0.
你能告诉我这是什么原因造成的吗?
PS。我知道矢量和表格,但不使用它们。 使用dev c ++编译
int main(){
int x1 = 10; int x2=10,x3=10;
int y1=60,y2=20,y3=20;
string res="";
cout << "config x pos ";
cin >> res;
while(res != "ok"){
cin >> res;
x1= atoi(res.c_str());
moveTo(x1, y1);
cout << endl;
}
cout << x1;
cout << "config y pos ";
cin >> res;
while(res != "ok"){
cin >> res;
y1= atoi(res.c_str());
moveTo(x1, y1);
cout << endl;
cout << "x " << x1 << endl;
}
}
答案 0 :(得分:2)
答案 1 :(得分:1)
当您从控制台输入“ok”时,下一行将是
x1 = atoi(res.c_str());
当面对非数字字符串时,atoi返回0,然后将其分配给x1。因此,当你的循环结束时,x1将始终为零。
答案 2 :(得分:1)
我不知道你为什么在开始时做cin >> res
两次(一次在循环之前,然后作为循环复制的第一行)。将你的循环改为:
while ( (cin >> res) && (res != "ok") )
{
x1= atoi(res.c_str());
moveTo(x1, y1);
}
您可能还想考虑做一些比atoi
更聪明的事情,例如如果他们输入&#34;你好&#34;这将只会移动到0等等。