Новая версия сайта находится на стадии beta-тестирования

Урок #11

В этом уроке изложена очень интересная тема, называемая перечислениями. Перечисления используют для создания своих типов данных, значениями которых могут быть числовые константы. Для создания перечислений используется ключевое слово enum, после которого в фигурных скобках пишется список констант.

enum Temperature { FREEZING, COLD, NORMAL, HOT, BOILING };

Так создается новый тип Temperature, значениями которого есть пять числовых констант. При их использовании можно использовать и их числовые аналоги. В данном случае это 0 - 4. Но было бы логично для первых двух констант использовать отрицательные значения. Это можно сделать при помощи оператора присвоения:

enum Temperature { FREEZING = -2, COLD, NORMAL, HOT, BOILING };

Обратите внимание, что, задав определенное числовое и обязательно целочисленное значение первой константе, мы задали и для всех последующих.Таким образом мы получили значения переменных FREEZING (-2), COLD (-1), NORMAL (0), HOT (1), BOILING (2). Но как с ними работать? Да как с обычными переменными! Рассмотрим пример

#include <iostream>
using namespace std;
 
enum Temperature { FREEZING = -2, COLD, NORMAL, HOT, BOILING };
 
int main() {
    Temperature temperature;
    temperature = FREEZING;
    cout << temperature << endl;

    system("pause");
}
-2
Для продолжения нажмите любую клавишу...

Важно заметить, что переменным нашего перечисления можно присваивать только значения самого этого перечисления, но не как их значения в int! И так мы получили в результате работы программы значение -2. Это довольно странно, ведь если мы напишем temperature = -2, то он подчеркнет данную строчку и скажет, что так делать нельзя. Но ничего, так работает этот язык программирования. Чтобы наша программа выводила именно текстовые строки, напишем собственную функцию. И не забудем подключить библиотеку <string>, чтобы выводить строки командой cout.

#include <iostring>
#include <string>

using namespace std;

enum Temperature { FREEZING = -2, COLD, NORMAL, HOT, BOILING };

string toString(Temperature temperature) {
    switch (temperature) {
        case FREEZING: return "FREEZING"; break;
        case COLD: return "COLD"; break;
        case NORMAL: return "NORMAL"; break;
        case HOT: return "HOT"; break;
        case BOILING: return "BOILING"; break;
    }
}
 
int main() {
    Temperature temperature;
    temperature = FREEZING;
    cout << temperature << endl << toString(temperature) << endl;

    system("pause");
}
-2
FREEZING
Для продолжения нажмите любую клавишу...

Возможные вопросы по теме:

Вопросов еще нет

Добавляйте свои вопросы в комментарии. Лучшие попадут в статью :)

Урок #10 Урок #12