Przypisanie, losowa wartość, dziwne

Przypisanie, losowa wartość, dziwne
MI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 243
0
Kopiuj
 #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?

Lucas Darkstorm
  • Rejestracja: dni
  • Ostatnio: dni
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.

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
4

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

Kopiuj
int x = ::x;

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.