I was writing a simple program to test how the scope of variables works, but I'm obtaining unexpected results, so I was hoping you could give me an hand to understand them.
I compiled this code

```
#include<iostream>
using namespace std;

void myFunction1()
    {
    int e;
    cout << e << endl;  
    e++;
    cout << e << endl<<endl;
    }

int main()
    {
    cout << "MAIN" << endl;
    int a,b,c,d;
    cout << "a= " << a << endl;
    cout << "b= " << b << endl;
    cout << "c= " << c << endl;
    cout << "d= " << d << endl<<endl;
    cout << "MY_FUNC" << endl;
    myFunction1();
    myFunction1();
    myFunction1();
    }

```

and obtained this output

```
MAIN
a= -1617852976
b= 32767
c= 0
d= 0

MY_FUNC
32675
32676

32676
32677

32677
32678

```

So, there are two things I really don't understand

1) In the main() function I'm creating 4 int variables (a,b,c,d) WITHOUT initializing them, so I expect them to assume a different value each time I run the code. Strange thing is, the first variable (a) is always different, while the others always assume the same values (b=32767, c=d=0)

2) The function output is even stranger to me.
Again, I'm creating a variable e without initializing it, so the first time it assumes a random value (in the example, e=32675).....then, I increase it by one, so that it prints 32675 and 32676, and that sounds right.

But how come the second time I call the function, e keeps the previous value (32676)? I thought e was created each time I call myFunction1() and deleted at the end of the function, so that e assumed a different random value each time (since I don't initialize it). Why is the value of e stored even if the variable goes out of scope?