Typ wyliczeniowy enum
Ostatnio zmodyfikowano 2016-07-17 20:38
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. 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; }
|
|
pekfos |
» 2016-07-17 15:01:37 Funkcja Podaj() ma niezdefiniowane zachowanie, jeśli nie zostanie podane 0, 1, 2, lub 3. |
|
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. |
|
pekfos |
» 2016-07-17 17:01:48 DIRECTION Podaj( int wybierz )
To mówi, że Podaj() zwraca poprawną wartość DIRECTION. Kompilator nie sprawdzi, czy w praktyce to zawsze jest prawda. |
|
filipbaza Temat założony przez niniejszego użytkownika |
» 2016-07-17 20:38:30 OK. Dzięki. |
|
« 1 » |