c++值在循环后丢失值

c++ value losing value after loop

本文关键字:循环 c++      更新时间:2023-10-16

在编译和执行以下代码时,我有以下问题:在while循环中,x1保持它的值。一旦输入"ok"并且while循环结束,x1将失去其值并重置为0。

你能告诉我是什么原因引起的吗?

p。我知道向量和表,但不使用它们。使用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;
        }
    }

一旦你输入"ok"并打破循环,函数atoi(res.c_str())返回0到变量x1;

当您从控制台中输入'ok'时,要执行的下一行是

x1 = atoi(res.c_str());

当面对非数字字符串时,atoi返回0,然后将其赋值给x1。因此,当循环结束时,x1将始终为零。

我不知道为什么你在开始时做两次cin >> res(一次在循环之前,然后作为循环副本的第一行)。将你的循环改为:

while ( (cin >> res) && (res != "ok") )
{
    x1= atoi(res.c_str());
    moveTo(x1, y1);
}

你可能还想考虑做一些比atoi更智能的事情,例如,如果他们输入"hello",这个将只移动到0,等等。