bob34
(Lol600000065)
23 Czerwiec 2010 09:30
#1
witam,
Chciałbym się was zapytać czego nie mogę zdefiniować takiego obiektu:
int i = rand() % 100 + 8; [/code]
Pod słowem ‘case’ w switch’u. W Comeau Online wszystko jest ok, natomiast w Code::Blocks (g++) wyswietla mi sie cos takiego:
O co chodzi :?:
bob34
(Lol600000065)
23 Czerwiec 2010 11:12
#3
Tzn jak splątana :?:
I dlaczego zakres lokalny rozwiązuje sprawę definiowania zmiennych w case’ach :?:
_alex
([alex])
23 Czerwiec 2010 11:28
#4
#include using namespace std;
bob34
(Lol600000065)
23 Czerwiec 2010 14:52
#5
Pierwszy raz widzę taki kod ;p
Ale ten zakres nie obejmuje wszystkich case’ów.
Zresztą jak to możliwe, że do zakresu pętli for da się wepchnąć default :?:
_alex
([alex])
23 Czerwiec 2010 15:03
#6
Właśnie że obejmuje, owszem są pewne ograniczenia ale …
I nie tylko default, możesz tam wstawić np case 5:
bob34
(Lol600000065)
24 Czerwiec 2010 08:41
#7
No OK - ale jak to mozliwe :?: Wg mojego rozumowania, skoro przed pętlą jest jakiś case, a w niej następny to logiczne jest że wykonywanie instrukcji zatrzyma się przed tym następnym. Bo jak np. mamy
switch(5)
_alex
([alex])
24 Czerwiec 2010 09:02
#8
Nadal rozumujesz konstrukcje switch/case jako konstrukcje planarną (czyli każdy case jest niezależny), a to jest w zasadzie taki trochę bardziej skomplikowany goto.
etam
(etam)
24 Czerwiec 2010 12:55
#9
Dobry opis działania switch masz tu: http://www.cplusplus.com/doc/tutorial/control/ na dole.
_alex
([alex])
24 Czerwiec 2010 14:12
#10
etam , czy ten opis pozwala zrozumieć jak działa for “wplatany” w kilka case’ow?
Jak nie to o czym ty mówisz?
bob34
(Lol600000065)
24 Czerwiec 2010 18:26
#11
No więc ten przykład nie działa:
switch(5)
_alex
([alex])
24 Czerwiec 2010 19:05
#12
Kto powiedział że break; postaw po case 4: cout<<"*"; np.
Wg mnie dokumentacja wszystko wyjaśnia.
bob34
(Lol600000065)
24 Czerwiec 2010 20:19
#13
Dokumentacja czyli standard :?:
No cóż w punkcie 6.4.2 The switch statement nic nie ma o tych sprawach