[C++] Definicja obiektu w instrukcji switch

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 :?:

case 0:

Tzn jak splątana :?:

I dlaczego zakres lokalny rozwiązuje sprawę definiowania zmiennych w case’ach :?:

#include using namespace std;

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 :?:

Właśnie że obejmuje, owszem są pewne ograniczenia ale …

I nie tylko default, możesz tam wstawić np case 5:

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)

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.

Dobry opis działania switch masz tu: http://www.cplusplus.com/doc/tutorial/control/ na dole.

etam , czy ten opis pozwala zrozumieć jak działa for “wplatany” w kilka case’ow?

Jak nie to o czym ty mówisz?

No więc ten przykład nie działa:

switch(5)

Kto powiedział że break; postaw po case 4: cout<<"*"; np.

Wg mnie dokumentacja wszystko wyjaśnia.

Dokumentacja czyli standard :?:

No cóż w punkcie 6.4.2 The switch statement nic nie ma o tych sprawach :frowning: