#include <iostream>
using namespace std;
int x=6;
int main()
{
int x=x;
cout << x;
return 0;
}
Dlaczego po uruchomieniu tego programu wyświetla się losowa wartość, a nie 6?
#include <iostream>
using namespace std;
int x=6;
int main()
{
int x=x;
cout << x;
return 0;
}
Dlaczego po uruchomieniu tego programu wyświetla się losowa wartość, a nie 6?
Bo ta lokalna zmienna przykrywa tę globalną. A zmienne lokalne nie są automatycznie inicjalizowane, więc znajdują się w niej śmieci (czyt. wartości, które były w pamięci wcześniej) i ta zmienna w mainie przypisuje sobie wartość z samej siebie. Generalnie to jest chyba UB.
Jeśli chcesz odnieść się do przesłonionej zmiennej x
to skorzystaj z pełnego zapisu:
int x = ::x;