Trasferimenti in C ++ (enum)

Vota questo articolo





перечисления с++, messa in C ++, enumeration c++enumerazione C ++

trasferimento (enum) utilizzata per creare costanti a C ++. Supponiamo che è necessario dichiarare costanti per ciascuna di note musicali e inizializzare il numero seriale appropriata. È possibile utilizzare un modo familiare:

перечисления с++, messa in C ++, enumeration c++enumerazione C ++

Questa dichiarazione prende un sacco di linee di codice e non è conveniente. utilizzando lista, Queste costanti possono essere determinati altrimenti. sintassi enum simile alla sintassi strutture: parola chiave – descrittore – elementi in parentesi, separati da virgole :

перечисления с++, messa in C ++, enumeration c++enumerazione C ++

Questa è la forma completa – descrittore (il nome del censimento). Come nel caso con strutture, elencando il nome, non è possibile utilizzare:

перечисления с++, messa in C ++, enumeration c++enumerazione C ++

Nel primo caso – siamo in grado di creare le variabili di tipo elenco note. Nel secondo caso, – no.

Si prega di notare, che il valore 1 E 'stato dato solo al primo elemento della lista. Per impostazione predefinita, la prima voce nelle parentesi viene assegnato un valore 0, il secondo più (1), il terzo è uno più del secondo (2) etc. Ma se si imposta in modo esplicito il valore, come nell'esempio, l'aumento della unità inizia con questo numero. Mostreremo sullo schermo i valori di alcuni elementi del conteggio.

I display della console:перечисления с++, messa in C ++, enumeration c++enumerazione C ++

Anche se non abbiamo assegnare valori esplicitamente RI e SOL – tengono i numeri di serie corretti di note.

I nomi di enumeratori (articoli elencati) deve essere univoco. I valori possono anche essere uguali:

senso 1 manterrà KLICHKO_VITALIY e KLICHKO_VLADIMIR. 2 zapishetsya in Chisora, 3 – in ADAMEK . Gli elementi elencati possono essere registrati solo numeri interi. Modificare nel programma i seguenti valori, sono assegnati agli elementi tra parentesi graffe non può essere. Se si crea una variabile di tipo elenco – può assumere solo il valore di uno dei suoi elementi:

перечисления с++, messa in C ++, enumeration c++enumerazione C ++

L'immagine mostra, che il tipo di variabile numero record campioni non è possibile. È possibile registrare solo una costante di nome, che viene dichiarata al momento della determinazione enum.

Ad esempio, si consideri il fissaggio. In esso crea un trasferimento levelsName. Conterrà sei elementi – “nome” pavimenti. offerta utente “fare un giro” l'ascensore.

Noi dichiariamo una variabile intera pavimento in linea 10 e inizializzare è chiamato costante parcheggio. così pavimento valuterà 0. on line 13 entrare ciclo while. Finché l'utente immette in una variabile exitOrNot senso 0, il programma gli offrirà “salite con l'ascensore” – selezionare il numero di pavimento. Dopo ogni pavimenti di selezione dei suoni di allarme (Tre brevi segnali acustici) e visualizza il numero del piano, e le informazioni relative, che è posto su di essa. Questo viene fatto istruzione switch selezione. I suoi blocchi caso Elementi di quotazione ordinati. Cioè, l'utente immette un numero intero, e caso cerca, che degli elementi elencati si incontra. per esempio, se introdotto 5 – ciò corrisponde ad un elemento Ristorante – visualizza un messaggio.

risultato:

перечисления с++, messa in C ++, enumeration c++enumerazione C ++

Guarda un breve video sulla trasferimenti C ++. È in inglese, ma è facile capire, dopo aver letto l'articolo:

Per sostenere il nostro sito – cliccare sul salvadanaio e scegliere qualsiasi modo conveniente.

Newsletter nuove lezioni sulla programmazione:

6 pensieri su "Trasferimenti in C ++ (enum)

  1. esempi normali, e non ho letto l'articolo.

    formulo, come ti pare raddrizzare, se l'articolo ho rotto in qualcosa.

    1) numeri magici – è male, per sbarazzarsi di loro utilizzando costante.

    2) costanti – è bene, ma le costanti sono fortemente collegati tra loro.

    esempio: il programma che abbiamo una unità. Un'unità può essere un mago, folletto o elfo. Una forma di realizzazione di questo potrebbe essere qualcosa:

    const int Mag = 1;
    const int Goblin = 2;
    const int Elf = 3;

    Unità struct {
    string name;
    int UNIT_TYPE;
    };

    ovviamente, è male, perché:
    2.1) Mag costante, folletto, Elf a disposizione di tutti, vale a dire. inquinare lo spazio dei nomi;
    2.2) Le costanti possono essere utilizzati in modo casuale nel contesto sbagliato, perché non sono raggruppati, vale a dire. Non è diverso da altre costanti;
    2.3) campo UNIT_TYPE, è possibile assegnare il valore errato (il compilatore non ci dice di un errore) :
    unit.unit_type = -123;
    2.4) Abbiamo bisogno di inventare se stessi valori delle costanti e del monitor in modo che non si ripetano.

    Tutti questi problemi erotico decide enum:

    enum UnitType { Mag, folletto, Elfo };
    Unità struct {
    tipo UNIT_TYPE;
    string name;
    };

    fare riferimento alle costanti possiamo sia direttamente (Mag) e l'enumerazione di nome (Tipo di unità::Mag). La seconda opzione è chiaramente il contesto indichi, ma sembra apparire in C ++ 11 (In precedenza è mantenuto maggior parte dei compilatori, ma standard come in quanto non è coerente con).

    unit.unit_type = 123;
    fallirà al momento della compilazione (vale a dire. molto presto). E se si yuzaete moderno IDE – anteriore (IDE sottolineerà errore).

    Ebbene, i valori assegnati automaticamente, seguire questo non è necessario.

    Il codice può essere fatta un po 'più bella:
    Unità struct {
    Tipo unum {Mag, folletto, Elfo} Digitare;
    string name;
    };

    Questo può essere meglio, tk. evidentemente, che unità e tipo indissolubilmente legati (prima di codificare nel nome UnitType). Codifica qualcosa nel nome non è molto buona, per esempio, se l'unità di essere rinominato la voce – dovremmo rinominare ItemType, o di un legame non sarebbe ovvio.
    Unità::Digitare::Mag imposta succintamente il contesto, in cui la costante può essere utilizzata.

  2. La mia versione di risolvere il problema dell'esempio:
    pre class =”solo:C ++ decodifica:vero ”

    #includere
    using namespace std;

    int main()
    {
    setlocale(LC_ALL, “rus”);
    lewels enum {undParking = -1, oneFloor = 1, = secondfloor 2, Ristorante = 3, Penthouse = 4};
    int lift = 0;
    int uscita = 1;
    cout <<"Вы зашли в здание и сейчас находитесь на " << un piano << " этаже \n";
    fare
    {
    cout <> sollevamento;
    interruttore (sollevamento)
    {
    caso(undParking):
    cout << "Вы попали в подземную автостоянку \n";
    rompere;
    caso(un piano):
    cout << "Вы на первом этаже \n";
    cout <> Uscita;
    Se (uscita == 0)
    {
    cout << "Вы вышли из здания \n";
    }
    rompere;
    caso(secondo piano):
    cout << "Вы на втором этаже \n";
    rompere;
    caso(Ristorante):
    cout << "Вы в ресторане \n";
    rompere;
    caso(attico):
    cout << "Вы в пентхаусе \n";
    rompere;
    predefinito:
    cout << "Нет такого этажа \n";
    }
    } mentre (uscita == 1);
    ritorno 0;
    }

    /pre

  3. Перечисления в языке C++ прямо наследуют поведение перечислений языка C, за исключением того, что перечисляемый тип в C++ — настоящий тип, и ключевое слово

    1. Цитата из описания языков C и C++:
      > В версии С89 определено 32 ключевых слова.
      > …
      > enum — Пользовательский тип данныхперечисляемый тип
      > …
      > В языке C++ содержатся все ключевые слова, определенные в версии С89, а также следующие.

      И где здесь различие?

Lascia un Commento

Inserire il codice nei tag: <pre class="lang:C ++ decodifica:true ">IL TUO CODICE</pre>