On Friday, 10 December 2021 at 13:35:37 UTC, Matheus wrote:
Hi,

Wouldn't the compiler be smart with this shadowing variable, example:

void main(){
    int j;
    for(int i=0,j=0;i<10;++i){}
    return;
}

onlineapp.d(3): Error: variable `j` is shadowing variable `onlineapp.main.j`

So in the "for loop" shouldn't "i" be declared and "j" just be assigned to 0?

Intuitively, there are two possible interpretations here for inexperienced humans (and you seem to be favoring the latter): 1. declare a new "j" variable to be visible only inside of the loop.
   2. reuse the existing "j" variable.

But only one of them is a correct description of what actually happens when the compiler processes this code. So it's a good thing that the compiler is smart enough to reject ambiguous code and prevent humans from making mistakes.

Reply via email to