未初始化的本地变量" name"使用

时间:2016-10-16 13:47:27

标签: c++ variables initialization int local

我一直在我的代码,未初始化的本地变量" name"用过的。我设置了一个像这样的变量

  

int name = 0;

然后在代码中

  

int name = name + 1;

我正在尝试将名称设置为0然后再添加1然后返回到开头并且仍然等于名称+ 1.问题是它一直将其设置为0。

为了使这里更容易,我正在讨论的部分。

int main()
{
    int w = 0;
    int choice;

    cout << "1: Register\n2: Login\nYour Choice:"; cin >> choice;

    if (choice == 1)
    {
        string username, password;
        cout << "Select A Username: "; cin >> username;
        cout << "Select A Password: "; cin >> password;

        ofstream file;
        file.open("data\\" + username + ".txt");
        file << username << endl << password;
        file.close();

        main();
    }
    else if (choice == 2)
    {
        bool status = IsLoggedIn();

        if (!status)
        {
            int w = w + 1;
            cout << "Unsuccesfull Login!" << endl;
            system("PAUSE");

            if (w == 3)
            {
                return 0;
            }
            else if (w == 2)
            {
                main();
            }
            else if (w == 1)
            {
                main();
            }
            else if (w == 0)
            {
                main();
            }
        }
        else
        {
            cout << "Succesfully Logged In!" << endl;
            system("PAUSE");
            return true;
        }
    }
}`

4 个答案:

答案 0 :(得分:2)

由于您没有收到重新声明变量name的错误,因此当您看不到第一个声明时,您似乎在代码中的某处使用了int name = name + 1;。这里的问题是int name = name + 1;秒&#34; name&#34;以前没有声明,你试图初始化你的第一个名字&#34;用它。 从一开始就是一个糟糕的方法,但问题在于,当您声明int name = name + 1;时,它不在int name = 0的范围内。

首先要确保你在编译器&#34;看到&#34;的地方递增你的name。声明int name = 0并删除int name = name + 1;

中的类型

答案 1 :(得分:0)

您要将变量声明两次。我建议:

int name = 0;

然后在代码中

name++;

您还可以使用:++name;name += 1

答案 2 :(得分:0)

当您尝试在同一范围内声明两个具有相同名称的变量时,C ++会抱怨。

基本上int name;创建变量名称。然后,您可以name在没有int的情况下解决问题。

您可能意味着int name = 0; [...] name = name + 1;

答案 3 :(得分:0)

您获得的错误看起来更像是警告。 似乎你在相同的范围内两次声明了相同的变量,并且通常在这种情况下,错误将是这样的:重新声明类型为int的变量“name”。

也许你在另一个范围内再次声明了“name”,并试图从另一个范围中获取第一个,如果没有指针或参考,这是不可能的。这只是我猜测,因为你没有发布整个代码。