Программирование >>  Дополнительные возможности наследования 

1 ... 13 14 15 [ 16 ] 17 18 19 ... 265


Рекомвнддвтся

Следите, чтобы значения переменных не превышали допустимый предел. Присваивайте переменным осмысленные имена, отражающие их назначение.

Используйте типы short и long, чтобы более эффективно управлять памятью компьютера.

Не рекомендуется

Не используйте в качестве имен переменных ключевые слова.

Константы перечислений

Перечисления позволяют создавать новые типы данных, а затем определять переменные этих типов, значения которых офаничены набором константных значений. Например, можно объявить COLOR как перечисление и определить для него пять значений: RED, BLUE, GREEN, WHITE И BLACK.

Для создания перечисления используется ключевое слово enum, за которым следуют: имя типа, открывающая фигурная скобка, список константных значений, разделенных запятыми, закрывающая фигурная скобка и точка с запятой. Например:

enum COLOR { RED, BLUE, GREEN, WHITE, BLACK };

Это выражение выполняет две задачи.

1. Создается перечисление с именем COLOR, являющееся новым типом.

2. Определяются символьные константы: RED со значением 0; BLUE со значением 1; GREEN со значением 2 и т.д.

Каждой константе перечисления соответствует определенное целочисленное значение. По умолчанию первая константа инициализируется значением О, а каждая следующая - значением, на единицу большим предыдущего. Однако любую константу можно инициализировать произвольным значением, и в этом случае явно неинициализированные константы продолжат возрастающую последовательность, взяв за точку отсчета значение, стоящее перед ними. Таким образом, если записать

enum Color { RED=100, BLUE, GREEN=500, WHITE, BLACK=700 };

TO константа red будет иметь значение 100; константа blue - 101; константа GREEN - 500; константа WHITE - 501; константа BLACK - 700.

Теперь можно определить переменные типа COLOR, но каждой из них можно присвоить только одно из перечислимых значений (в данном случае RED, BLUE, GREEN, WHITE или BLACK либо 100, 101, 500, 501 ИЛИ 700). Переменной COLOR можно присвоить любое значение цвета. На самом деле этой переменной можно присвоить любое целое значение, даже если оно не соответствует ни одному из разрешенных цветов, но в этом случае приличный компилятор должен возмутиться и показать предупреждающее сообщение. Важно понимать, что переменные перечисления на самом деле имеют тип unsigned int и целочисленным переменным присваиваются заданные константы перечисления. Однако иногда при работе с цветами, днями недели или другими подобными наборами значений неплохо иметь возможность называть эти значения по имени. В листинге 3.7 представлена профамма, в которой используется тип перечисления.



тсшииг 3.7. Нсподьзованив пврвчпсдвнвя

Sinclude <iostream.h>

int main()

enum Days { Sunday, Monday, Tuesday,

Wednesday, Thursday, Friday, Saturday }; int choice;

cout Enter a day (0-6): ; cin choice;

if (choice = Sunday choice == Saturday)

cout \nYoure already off on weekends!\n ; else

cout \nOkay, Ill put in the vacation day.\n return 0;

Enter a day (0-6): 6 Youre already off on weekends!

i строке 4 определяется перечисление DAYS с семью константными значе-

ниями. Все они образуют возрастающую последовательность чисел, начи-

ная с нуля; таким образом, значение вторника (Tuesday) равно 2.

Пользователю предлагается ввести значение между О и 6. Он не может ввести слово Sunday, поскольку в программе не предусмотрен перевод символов в значение перечисления. Но можно проверить введенное пользователем значение, сравнив его с константными значениями перечисления, как показано в строке 9. Использование перечисления облегчает анализ программы. Того же эффекта можно добиться, используя константы целочисленного типа, как показано в листинге 3.8.

примечание

Для этой и всех небольших программ в данной книге я намеренно не предусматривал включения ряда выражений, которые обычно пишутся для обработки ситуаций, связанных с приемом от пользователя неверных данных. Например, в этой программе отсутствует проверка вводимых чисел, которая должна обязательно присутствовать в настоящей программе и предназначена для предупреждения ввода неразрешенных чисел. Это было сделано намеренно, для того чтобы сэкономить место в книге и сосредоточить ваше внимание только на рассматриваемой в данном разделе теме.

йвсшвиг 3.8. Та жв првграмма, по с вспвйьзованивм aoncaianai цвдачвсжвввога говва

Sinclude <iostream.h>

int mainO

const int Sunday = 0; const int Monday = 1; const int Tuesday = 2; const int Wednesday = 3;



8: const int Thursday = 4; 9: const int Friday = 5; const int Saturday = 6;

10 11 12 13 14 15 16 17 18 19 20 21 22

int choice;

cout Enter a day (0-6): ; cin << choice;

if (choice = Sunday choice == Saturday)

cout \nYoure already off on weekends!\n ;

else

cout << \n0kay, Ill put in the vacation day.\n return 0;

! Enter a day (0-6): 6

Youre already off on weekends!

Результаты работы этой программы идентичны результатам профаммы из

листинга 3.7. Но в этом варианте все константы (Sunday, Monday и пр.) определены в явном виде и отсутствует тип перечисления Days. Обратите внимание, что профамма с перечислением короче и логичнее.

Резюме

На этом занятии рассматривались числовые и символьные переменные и константы, которые в С++ используются для хранения данных во время выполнения профаммы. Числовые переменные могут бьпъ либо целыми (char, short и.long int), либо вещественными (float и double). Кроме того, они могут быть знаковыми и беззнаковыми (unsigned). Хотя на различных компьютерах все эти типы могут иметь разные размеры, но на одном компьютере переменные одного и того же типа всегда имеют постоянный размер.

Переменную нужно объявить до ее использования. При работе с данными необходимо следить, чтобы тип данных соответствовал объявленному типу переменной. Если, например, поместить слишком большое число в целую переменную, возникнет переполнение, которое приведет к неверному результату.

Кроме того, вы познакомились с литеральными, символьными и перечислимыми константами, а также с двумя способами объявления символьных констант: с помощью директивы #define и ключевого слова const.

Вопросы о ответы

Если переменные типа short int могут преподнести сюрприз в виде переполнения памяти, то почему бы не использовать во всех случаях переменные типа long int?

Как короткие (short), так и длинные (long) целочисленные переменные могут переполняться, но для того чтобы это произошло с типом long int, нужно уж слишком большое число. Например, переменная типа unsigned short int переполнится после



1 ... 13 14 15 [ 16 ] 17 18 19 ... 265

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика