break;
case McIntosh: cout << "McIntosh";
break;
}
Иногда для перевода значения перечисления в соответствующую строку можно объявить массив строк и использовать значение перечисления в качестве индекса. Например, следующая программа выводит названия трех сортов яблок.
#include
using namespace std;
enum apple {Jonathan, Golden_Del, Red_Del, Winesap, Cortland, McIntosh};
// Массив строк, связанных с перечислением apple.
char name[][20] = {
"Jonathan",
"Golden Delicious",
"Red Delicious",
"Winesap",
"Cortland",
"McIntosh",
};
int main()
{
apple fruit;
fruit = Jonathan;
cout << name[fruit] << '\n';
fruit = Winesap;
cout << name[fruit] << '\n';
fruit = McIntosh;
cout << name[fruit] << '\n';
return 0;
}
Результаты выполнения этой программы таковы.
Jonathan
Winesap
McIntosh
Использованный в этой программе метод преобразования значения перечисления в строку можно применить к перечислению любого типа, если оно не содержит инициализаторов. Для надлежащего индексирования массива строк перечислимые константы должны начинаться с нуля, быть строго упорядоченными по возрастанию, и каждая следующая константа должна быть больше предыдущей точно на единицу.
Из-за того, что значения перечисления необходимо вручную преобразовывать в удобные для восприятия человеком строки, они, в основном, используются там, где такое преобразование не требуется. Для примера рассмотрите перечисление, используемое для определения таблицы символов компилятора.
В C++ разрешается определять новые имена типов данных с помощью ключевого слова
typedef тип новое_имя;
Здесь элемент
Например, с помощью следующей инструкции можно создать новое имя для типа
typedef float balance;
Эта инструкция является предписанием компилятору распознавать идентификатор
balance over_due;
Здесь объявлена переменная с плавающей точкой
Выше в этой книге вы уже познакомились с большинством операторов, которые не уникальны для C++. Но, в отличие от других языков программирования, в C++ предусмотрены и другие специальные операторы, которые значительно расширяют возможности языка и повышают его гибкость. Этим операторам и посвящена оставшаяся часть данной главы.
Поскольку C++ нацелен на то, чтобы позволить полный доступ к аппаратным средствам компьютера, важно, чтобы он имел возможность непосредственно воздействовать на отдельные биты в рамках байта или машинного слова. Именно поэтому C++ и содержит поразрядные операторы. Поразрядные операторы предназначены для тестирования, установки или сдвига реальных битов в байтах или словах, которые соответствуют символьным или целочисленным С++-типам. Поразрядные операторы не используются для операндов типа