Cześć wszystkim ;)
Mam taką dziwną zagwostkę, mianowicie w instrukcji sterującej switch, przy etykiecie case może pojawić się tylko i wyłącznie stałe wyrażenie, czyż nie? No to dlaczego to działa:
#include <iostream>
using namespace std;
const int a = 2, b = 3, c = 4;
const int tabliczka[5] = {1, 2, 3, 4, 5};
int main(int argc, char **argv)
{
cout << "Hello, world! Today we are going to test switch instruction :)" << endl;
cout << "Gimme some fish : \t";
int wartosc = 0;
cin >> wartosc;
switch(wartosc)
{
case a:
{
cout << "To jest wlasnie " << a << endl;
}
break;
case b:
{
cout << "To jest wlasnie " << b << endl;
}
break;
case c:
{
cout << "To jest wlasnie " << c << endl;
}
break;
default:
{
cout << "To jest wlasnie " << wartosc << endl;
}
break;
}
return 0;
}
A to już nie działa:
#include <iostream>
using namespace std;
const int a = 2, b = 3, c = 4;
const int tabliczka[5] = {1, 2, 3, 4, 5};
int main(int argc, char **argv)
{
cout << "Hello, world! Today we are going to test switch instruction :)" << endl;
cout << "Gimme some fish : \t";
int wartosc = 0;
cin >> wartosc;
switch(wartosc)
{
case tabliczka[1]:
{
cout << "To jest wlasnie " << tabliczka[1] << endl;
}
break;
case tabliczka[2]:
{
cout << "To jest wlasnie " << tabliczka[2] << endl;
}
break;
case tabliczka[3]:
{
cout << "To jest wlasnie " << tabliczka[3] << endl;
}
break;
default:
{
cout << "To jest wlasnie " << wartosc << endl;
}
break;
}
return 0;
}
Czyli, dlaczego niepowiązane w tablice obiekty mogą stać przy etykiecie case, a stałe obiekty powiązane w tablice już nie?
Z góry dzięki za odpowiedź :)