循环后c ++值丢失值

时间:2014-07-23 22:19:53

标签: c++

编译和执行以下代码时出现以下问题: 在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;
        }
    }

3 个答案:

答案 0 :(得分:2)

一旦你进入&#34; ok&#34;并打破循环, 函数atoi(res.c_str())将零返回到变量x1;

答案 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等等。