Zakres widoczności zmiennych

2018-11-29 12:51
0

Siemka, mam takie zadanie:
"Zadeklaruj jedną zmienną globalną oraz jedną lokalną o tej samej nazwie. Zademonstruj
zakres widoczności zmiennej lokalnej, w sytuacji kiedy przesłoni zmienną globalną."
Napisałem takie kod i nie wiem (a raczej wątpię) czy załatwia on sprawę, prosiłbym o pomoc, z góry dzięki :



using namespace std;

int variables=12;

int main()
{
    int variables=11;
    cout<<variables;//Wyswietla sie wartosc zmiennnej lokalnej
    return 0;
}```

Pozostało 580 znaków

2018-11-29 12:55
2

Powiedziałbym że jest OK, ja bym tylko wypisał dodatkowo zmienną variables przed re-deklaracją.

Pozostało 580 znaków

2018-11-29 12:55
0

1) tak jako informacja, nie uzywaj globalnych. Wiem, ze takie jest zadanie, ale po zadaniu zapomnij o globalnych zmiennych.

2) teraz zmien wartosc globalnej zmiennej i znowu wyswietl ta zmienna. W ten sposob pokazesz ze mimo, ze zmieniasz wartosc tej zmiennej, ta globalna nadal zostaje taka sama. Najlepiej zrob sobie druga funkcje ktora wyswietla globalna zmienna. wiec bedziesz miec taki flow

  • wyswietlasz zmienna globalna w funkcji Foo()
  • funkcja Bar() zmienia wartosc zmiennej o tej samej nazwie (i bedzie to zmienna lokalna)
  • wyswietlasz zmienna globalna w funkcji Foo()

Pozostało 580 znaków

2018-11-29 12:55
kq
2

W sumie to pytanie z serii " o co prowadzącemu chodziło".

Dla mnie wygląda to spoko, ale mógłbyś jeszcze wypisać variables nad definicją zmiennej wewnątrz funkcji main(), aby pokazać, że tam będzie inna wartość.


co ten 4p tak dziala wolno... czy to tylko mi - fasadin 2018-11-29 12:57
probuje dac lapki w gore i nie dziala :( - fasadin 2018-11-29 12:59
Ja nie czuję różnicy, ale ja mam Internet na korbkę (1 Mb/s ↓, 256 kb/s ↑)… - Althorion 2018-11-29 13:03
Też odczuwam problemy z forum. - kq 2018-11-29 13:08

Pozostało 580 znaków

2018-11-29 13:04
0

Oki, dzieki za pomoc. Zgadzam się co do tego że nie wiadomo o co chodzi prowadzącemu...

Pozostało 580 znaków

2018-11-29 13:10
0
Bartek24 napisał(a):

Oki, dzieki za pomoc. Zgadzam się co do tego że nie wiadomo o co chodzi prowadzącemu...

Wiadomo. Chodzi mu o operator zakresu ::

  • variable z maina
  • ::variable globalne

Na przykładzie wygląda to tak:

#include <iostream>

using namespace std;

int variable = 5;

void fun()
{
    cout << "fun() globalne:" << variable << endl;//Globalne, bo innego nie ma

    int variable = 15;
    cout << "fun() lokalne:" << variable << endl;//Lokane, bo w tym miejscu kompilator widzi definicję zmiennej lokalnej variable

    cout << "fun() globalne:" << ::variable << endl;//globalne, bo jasno zasygnalizowałem kompilatorowi przez użycie :: "użyj zmiennej globalnej"
}

int main()
{
    int variable = 10;

    fun();

    cout << "main() lokalne:" << variable << endl;
    cout << "main() globalne:" << ::variable << endl;

    return 0;
}

https://onlinegdb.com/rJDTgv6RQ


"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]
edytowany 3x, ostatnio: MasterBLB, 2018-11-29 13:54
Pokaż pozostałe 6 komentarzy
Nie zgadzam się, że w tym zadaniu o to chodziło. Masz zademonstrować przesłanianie nazw, a nie sposób na jego uniknięcie - kq 2018-11-29 16:34
I jest to zademonstrowane, najlepiej widać w fun(). A sposób na uniknięcie to dopełnienie tematu, bez którego imo nie ma on większego sensu. Ale, to poczekajmy na wypowiedź autora wątku czy to jest to, czego chciał się dowiedzieć. - MasterBLB 2018-11-29 16:39
Ale ja nie neguję fun(), neguję zacytowane przeze mnie stwierdzenie. "W zadaniu chodzi o" implikuje główny cel zadania. operator :: nim nie jest. - kq 2018-11-29 16:41
Idąc dalej w analogie: jeśli zadaniem jest "zademonstruj wpływ oblodzenia drogi na przyczepność pojazdu" to chodzi w nim o pokazanie różnicy w przyczepności, a nie o łańcuchy na koła. - kq 2018-11-29 16:45
Tutaj pewnie jest podobna sytuacja jak była z https://4programmers.net/Forum/1541989 - ja wywnioskowałem z opisu zadania, że chodzi o demonstrację przesłaniania nazw przez zmienne lokalne, oraz użycie :: aby się jednak odwołać do czegoś globalnego, a przesłoniętego. - MasterBLB 2018-11-29 17:10

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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