Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Typ wyliczeniowy enum

Ostatnio zmodyfikowano 2016-07-17 20:38
Autor Wiadomość
filipbaza
Temat założony przez niniejszego użytkownika
Typ wyliczeniowy enum
» 2016-07-17 14:41:45
Cześć.

Mógłby mi ktoś wyjaśnić dlaczego gdy wpiszę do zmiennej int "wybor" wartość np. 20 to zostanie ona przypisana do zmiennej RUCH typu DIRECTION.
Z tego co zrozumiałem to możliwe jest przypisanie tylko podanych 4 wartości z enum.
Na końcu programu w celu zrozumienia typu enum wyświetliłem zmienną RUCH i nie rozumiem czemu jest ona równa 20 skoro powinien wystąpić błąd.

 
C/C++
enum DIRECTION { GORA, DOL = 1, LEWO = 2, PRAWO = 3 };
DIRECTION Podaj( int wybierz )
{
    if( wybierz == 0 ) return GORA;
   
    if( wybierz == 1 ) return DOL;
   
    if( wybierz == 2 ) return LEWO;
   
    if( wybierz == 3 ) return PRAWO;
   
}
int main()
{
    int wybor;
    cout << "wybierz kierunek (0-gora, 1-dol, 2-lewo, 3-prawo)" << endl;
    cin >> wybor;
    DIRECTION RUCH = Podaj( wybor );
    switch( RUCH )
    {
    case GORA: {
            cout << "w gore " << endl;
            break;
        }
    case DOL: {
            cout << "w dol " << endl;
            break;
        }
    case LEWO: {
            cout << "w lewo " << endl;
            break;
        }
    case PRAWO: {
            cout << "w prawo " << endl;
            break;
        }
        default: {
            cout << "zle" << endl;
            break;
        }
       
    }
    cout << RUCH << endl;
   
   
    getch();
    return 0;
}
P-150066
pekfos
» 2016-07-17 15:01:37
Funkcja Podaj() ma niezdefiniowane zachowanie, jeśli nie zostanie podane 0, 1, 2, lub 3.
P-150068
filipbaza
Temat założony przez niniejszego użytkownika
» 2016-07-17 15:13:44
A to nie powinno być tak, że z definicji enum kazda próba przypisania nieprawidłowej wartości to błąd?
Gdy wpiszę tak:
DIRECTION RUCH = 20;
 to jest błąd więc wydaje mi się, że gdy funkcja wpisuje tą samą wartość powinno się dziać podobnie.
P-150070
pekfos
» 2016-07-17 17:01:48
C/C++
DIRECTION Podaj( int wybierz )
To mówi, że Podaj() zwraca poprawną wartość DIRECTION. Kompilator nie sprawdzi, czy w praktyce to zawsze jest prawda.
P-150072
filipbaza
Temat założony przez niniejszego użytkownika
» 2016-07-17 20:38:30
OK.
Dzięki.
P-150081
« 1 »
  Strona 1 z 1