使用未初始化的局部变量"name"

Uninitialized Local Variable "name" Used

本文关键字:局部变量 name 初始化      更新时间:2023-10-16

我一直得到这个错误在我的代码,未初始化的局部变量"name"使用。我像这样设置一个变量

int name = 0;

然后在后面的代码中,

int name = name + 1;

我试图将name设置为0,然后将1添加到它,然后返回到开始,仍然使它等于name + 1。问题是它总是把它放回0。

为了使它更简单,这里是我正在谈论的部分。

int main()
{
    int w = 0;
    int choice;
    cout << "1: Registern2: LoginnYour 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;
        }
    }
}`

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

因此,首先要确保在编译器"看到"int name = 0声明的地方增加name,并消除int name = name + 1;

中的类型

当你试图在同一作用域中声明两个具有相同名称的变量时,c++会报错。

基本上int name;创建了变量名。然后,您可以通过name而不使用int来寻址它。

你可能指的是int name = 0; [...] name = name + 1;

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

int name = 0;
然后在后面的代码中,
name++;

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

您得到的错误看起来更像是一个警告。尽管如此,似乎你在同一作用域中声明了两次相同的变量,通常在这种情况下,错误会是这样的:重新声明int类型的变量name。

也许你在另一个作用域中再次声明了"name",并试图从另一个作用域中获得第一个,如果没有指针或引用,这是不可能的。这只是我的猜测,因为你没有发布完整的代码。