|
Программирование >> Процедурные приложения
1990 19.9 9.87654е+018 Ш -154494568 -2.05461 е+018 9.87654е+018 Размер объединения составляет: 8 байт. Ключевое слово typedef С помощью ключевого слова typedef можно создавать новые типы данных на основании уже существующих. Как правило, это необходимо для упрощения текста программы. Например, выражение typedef struct stboat* stboatptr; делает имя stboatptr синонимом конструкции stboat*. Теперь создать указатель на структуру stboat можно будет следующим образом: stboatptr my boat; Перечисления Перечисления, создаваемые с помощью ключевого слова enum, также служат цели сделать программный код более удобочитаемым. Они представляют собой множества именованных целочисленных констант. Для описания перечисления используется следующий синтаксис: enum необязательн1й тег (константа1 [= значение!], константа-n[= значение-п]}; Как вы уже догадались, необязательный тег служит тем же целям, что и теги структур и объединений. Если тег не указан, то сразу после закрывающей фигурной скобки должен находиться список имен переменных. При наличии тега переменные данного перечисления можно будет создавать в любом месте программы (в C++ в этом случае нет необходимости повторно указывать ключевое слово enum). Константы, входящие в перечисление, имеют тип int. По умолчанию первая константа равна 0, следующая - 1, потом - 2 и т.д. в арифметической прогрессии. Таким образом, значения констант можно не указывать: они будут вычислены автоматически путем формирования прогрессии с шагом 1 от последнего специфицированного значения. В то же время, для каждой константы после знака равенства можно указывать собственное значение. Все константы одного перечисления должны иметь разные имена, но их значения могут совпадать. Эти имена должны также отличаться от имен обычных переменных в той же области видимости. Например, в следующем фрагменте программы можно организовать цикл от 0 до 4, а можно - от понедельника до пятницы: enum eweekdays { /* будние дни */ Monday,/* понедельник */ Tuesday,/* вторник */ Wednesday, /* среда */ Thursday,/* четверг */ .Friday )/* пятница */ /* описание перечисления в языке С */ enumeweekdaysewToday; /* описание перечисления в C++ */ eweekdaysewToday; /* задание цикла for без использования перечисления */ for(i=0;i<= 4; i++) for(ewToday = Monday; ewToday <= Friday; ewToday++) Компилятор не видит разницы между типами данных intи enum. Поэтому переменным типа перечисления в программе могут присваиваться целочисленные значения. Но в языке C++, если такое присваивание не сопровождается явным приведением типа, компилятор выдаст предупреждение: /* допустимо в С, но не в C++ */ ewtodау = 1; /* устранение ошибки в C++ */ ewToday = (eweekdays) 1; Перечисления часто используются в тех случаях, когда данные можно представить в виде нумерованного списка, например содержащего названия месяцев года или дней недели. В следующем примере создается перечисление emonths, включающее названия месяцев. * enum. с * Эта программа на языке С демонстрирует работу с перечислением. #include <stdio.h> enum emonths { January = 1 , February, March, April, May, June, July, August, September, October, November, December } months; int main(void) int ipresent month; int idiff; { printf( Введите номер текущего месяца (от1 до 12): ) ; scanf( %d ,&ipresent month); months = December; idiff = (int)months - ipresent month; printf( \nfloконца года осталось %dмесяца(ев)An , idiff); return (0); В данной программе перечисление в действительности представляет собой ряд целых чисел от 1 до 12. Например, значение переменной months, после того как ей была присвоена константа December, стало равным 12. Поскольку названию каждого месяца соответствует определенное числовое значение, то элементы перечисления могут участвовать в арифметических операциях. В результате выполнения программы на экран будет выведена примерно следующая информация: Введите номер текущего месяца (от 1 до 12): 4 До конца года осталось 8 месяца(ев).
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |