[C++] Definicja obiektu w instrukcji switch


(Lol600000065) #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 :?:


([alex]) #2
case 0:

(Lol600000065) #3

Tzn jak splątana :?:

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


([alex]) #4
#include using namespace std;

(Lol600000065) #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]) #6

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

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


(Lol600000065) #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]) #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) #9

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


([alex]) #10

etam , czy ten opis pozwala zrozumieć jak działa for "wplatany" w kilka case'ow?

Jak nie to o czym ty mówisz?


(Lol600000065) #11

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

switch(5)

([alex]) #12

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

Wg mnie dokumentacja wszystko wyjaśnia.


(Lol600000065) #13

Dokumentacja czyli standard :?:

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