Scope dla switcha i tworzenie obiektów

Scope dla switcha i tworzenie obiektów
  • Rejestracja:ponad 10 lat
  • Ostatnio:około 2 lata
  • Postów:62
0

Cześć,

Mam pewien problem z kolegą, mianowicie:

Kopiuj
switch (liczba)
{
	case 1:
		abc a; 
		break;
	case 2: 
		abc b; 
		break;
}

W powyższym przypadku występuje błąd, ponieważ jedna ze zmiennych będzie nie zainicjalizowana, zgadza się?
Natomiast w przypadku poniższym:

Kopiuj
switch (liczba)
{
	case 1:
		abc a; 
		break;

		abc b; 
		break;
}

Kiedy już nie ma linijki z case 2, wtedy kompilator już nie rzuca błędem, lecz nie do końca jest to dla Nas zrozumiałe. Pomijając przypadek, że liczba != 1, w przypadku kiedy wynosi ona 1, jest tworzony obiekt a, natomiast co się dzieje ze zmienną b? Przecież tam jest break i do zmiennej b już nie powinno dojść wykonanie programu, więc nie powinno być - analogicznie do poprzedniego przypadku - błędu?

Dzięki z góry za pomoc

gośćabc
  • Rejestracja:prawie 11 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Szczecin
  • Postów:500
0

opakuj te działania w case'ach w nawiasy i będzie wszystko w porządku, 1 się też skompiluje

przeczytaj odpowiedź w tym poście:
http://stackoverflow.com/questions/7044574/about-the-braces-in-case-statement-in-switch

a tutaj jeszcze więcej o tym:
http://stackoverflow.com/questions/11578936/getting-a-bunch-of-crosses-initialization-error

edytowany 2x, ostatnio: gośćabc

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.