Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is this c++ working? (variables with the same name)

Tags:

c++

scope

Alright, I wanna know why this code is working, I just realized that I have two variables with the same name within the same scope.

I'm using g++ (gcc 4.4).

for(int k = 0 ; k < n ; k++)
    {
        while(true)
        {
            i = Tools::randomInt(0, n);
            bool exists = false;

            for(int k = 0 ; k < p_new_solution_size ; k++)
                if( i == p_new_solution[k] )
                {
                    exists = true;
                    break;
                }
            if(!exists)
                break;
        }

        p_new_solution[p_new_solution_size] = i;
        p_new_solution_size++;
    }
like image 533
hfingler Avatar asked Nov 11 '10 03:11

hfingler


1 Answers

The k in the inner for loop shadows (or hides) the k in the outer for loop.

You can declare multiple variables with the same name at different scopes. A very simple example would be the following:

int main()
{
    int a;       // 'a' refers to the int until it is shadowed or its block ends
    { 
        float a; // 'a' refers to the float until the end of this block
    }            // 'a' now refers to the int again
}
like image 134
James McNellis Avatar answered Oct 26 '22 23:10

James McNellis