Przypisanie, losowa wartość, dziwne

0
 #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?

2

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.

4

Jeśli chcesz odnieść się do przesłonionej zmiennej x to skorzystaj z pełnego zapisu:

int x = ::x;

http://melpon.org/wandbox/permlink/hhvVdQa905XjzQaE

1 użytkowników online, w tym zalogowanych: 0, gości: 1