Объявление переменной перечислимого типа
Объявление переменной перечислимого типа
Синтаксис:
enum [<тег>]{<список-перечисления>} <описатель>[,<описатель>…];
enum <тег> <идентификатор> [<идентификатор>…];
Объявление переменной перечислимого типа задает имя переменной и определяет список именованных констант, называемый списком перечисления. Каждому элементу списка перечисления ставится в соответствие целое число. Переменная перечислимого типа может принимать только значения из своего списка перечисления. Элементы списка имеют тип int. Поэтому переменной перечислимого типа выделяется ячейка памяти, необходимая для размещения значения типа int. Перечислимый тип, таким образом, представляет собой подмножество целого типа. Над объектами перечислимого типа определены те же операции, что и над объектами целого типа.
<Описатель> специфицирует либо переменную перечислимого типа, либо указатель на значение перечислимого типа, либо массив элементов перечислимого типа, либо функцию, возвращающую значение перечислимого типа, либо более сложный объект, являющийся комбинацией перечисленных типов.
Объявление переменной перечислимого типа начинается с ключевого слова enum и имеет две формы представления.
В первой форме задается список перечисления, содержащий именованные константы. Необязательный <тег> — это идентификатор, который именует перечислимый тип, специфицированный данным списком перечисления, <идентификатор> — это имя переменной перечислимого типа. В одном объявлении может быть описано более одной переменной данного перечислимого типа.
Во второй форме объявления список перечисления отсутствует, однако используется <тег>, который ссылается на перечислимый тип, объявленный в другом месте программы. Если заданный тег ссылается на неизвестный перечислимый тип либо область действия определения этого перечислимого типа не распространяется на текущий блок, то компилятор языка Си сообщает об ошибке. Допускаются объявление указателя на перечислимый тип и объявление typedef для перечислимого типа, использующие тег ранее не определенного перечислимого типа. Однако этот тип должен быть определен к моменту использования этого тега или типа, объявленного посредством typedef.
<Список-перечисления> содержит одну или более конструкций вида:
<идентификатор> [=<константное-выражение>]
Конструкции в списке разделяются запятыми. Каждый <идентификатор> именует элемент списка перечисления. По умолчанию, если не задано <константное-выражение>, первому элементу присваивается значение 0, следующему элементу—значение 1 и т. д. Элемент списка перечисления является константой.
Запись =<константное-выражение> изменяет умалчиваемую последовательность значений. Элемент, идентификатор которого предшествует записи =<константное-выражение>, принимает значение, задаваемое этим константным выражением. Константное выражение должно иметь тип int и может быть как положительным, так и отрицательным. Следующий элемент списка получает значение, равное <константное-выражение>+1, если только его значение не задается явно другим константным выражением.
В списке перечисления могут содержаться элементы, которым сопоставлены одинаковые значения, однако каждый идентификатор в списке должен быть уникальным. Например, двум различным идентификаторам null и zero может быть задано значение 0 в одном и том же списке перечисления. Кроме того, идентификатор элемента списка перечисления должен быть отличным от идентификаторов элементов всех остальных списков перечислений с той же областью действия, а также от других идентификаторов с той же областью действия (см. раздел 2.5). Тег перечислимого типа должен быть отличным от тегов других перечислимых типов, структур и объединений с той же самой областью действия.
Примеры.
/* пример 1 */
enum day {
SATURDAY,
SUNDAY = 0,
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY
} workday;
/* пример 2 */
enum day today = WEDNESDAY;
В первом примере перечислимый тип определяется списком. Перечислимый тип именуется тегом day, и объявляется переменная workday этого перечислимого типа. С элементом SATURDAY по умолчанию ассоциируется значение 0. Элементу SUNDAY явно присваивается значение ноль. Остальные идентификаторы по умолчанию принимают значение от 1 до 5.
Во втором примере переменная перечислимого типа today инициализируется значением одного из элементов списка перечисления. Так как перечислимый тип с тегом day был предварительно объявлен, то при объявлении today достаточно сослаться только на тег day, не записывая повторно сам список перечисления.
Примечание. В языке Си принято записывать имена элементов перечисления прописными буквами, однако это необязательно.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Объявление типа документа
Объявление типа документа В начале каждого HTML-документа следует помещать строку объявления такого рода:<!DOCTYPE HTML PUBLIC «-//W3C//DTD HTML 4.01 Transitional//EN» «http://www.w3.org/ TR/html4/loose.dtd»>Эта строка дает браузеру общую информацию об HTML-документе. Несмотря на то что вам вряд ли придется
Логические функции определения типа переменной
Логические функции определения типа переменной is_scalarПроверяет, является ли переменная простой.Синтаксис:bool is_scalar(mixed var)Возвращает true, если var имеет скалярный тип (чила, строки, логические значения), но не комплексный (массивы или объекты).is_nullПроверяет, является ли
var - Объявление локальной переменной
var - Объявление локальной переменной varИспользуется для объявления локальных переменныхСинтаксис:var variableName1 [= value1] [...,variableNameN [=valueN]];Аргументы:Описание:Создание переменной называется ее объявлением. Объявление - это этап формального создания переменной. Когда впервые
14. Объявление переменной на внутреннем уровне с классом памяти static
14. Объявление переменной на внутреннем уровне с классом памяти static В качестве примера рассмотрим объявление переменной i на внутреннем уровне с классом памяти static.исходный файл filel.сmain(){}fun1(){static int i = 0; исходный файл file2.c fun2(){static int i = 0; }fun3(){static int i = 0; }В этом примере
15. Объявление переменной, которая служит именем внешнего массива
15. Объявление переменной, которая служит именем внешнего массива Рассмотрим пример: объявление переменной i, которая служит именем внешнего массива длинных целых чисел, на локальном уровне.исходный файл file1.cmain(){…}fun1(){extern long i[];…}/* исходный файл file2.c */long i[MAX] =
Отличия процедур типа Function от процедур типа Sub
Отличия процедур типа Function от процедур типа Sub Между процедурами типа Function и типа Sub есть одно существенное отличие: в процедуре типа Function обязательно где-то должен присутствовать по крайней мере один оператор, задающий значение этой функции. При этом используется имя
Объявление переменных пользовательского типа
Объявление переменных пользовательского типа Как и встроенные типы данных, пользовательский тип остается абстрактным понятием до тех пор, пока вы не объявите переменную соответствующего типа. Для этого не требуется что-то особенное- годится стандартный синтаксис
Генерирование типа HelloClass и принадлежащей ему строковой переменной
Генерирование типа HelloClass и принадлежащей ему строковой переменной Теперь вы понимаете роль метода ModuleBuilder.CreateType(), и пришло время выяснить, как сгенерировать открытый тип класса HelloWorld и приватную строковую переменную.// Определение открытого класса MyAssembly.HelloWorld.TypeBuilder
Объявление простой переменной
Объявление простой переменной Синтаксис:<спецификация типа> <идентификатор> [,<идентификатор>…];Объявление простой переменной определяет имя переменной и ее тип. Имя переменной задается <идентификатором>. <Спецификация типа> задает тип переменной. Тип
Объявление переменной на внешнем уровне
Объявление переменной на внешнем уровне Объявления переменной на внешнем уровне используют спецификации класса памяти static и extern или вообще опускают их. Спецификации класса памяти auto и register не допускаются на внешнем уровне.Объявления переменных на внешнем уровне—это
Объявление переменной на внутреннем уровне
Объявление переменной на внутреннем уровне Любая из четырех спецификаций класса памяти может быть использована для объявления переменной на внутреннем уровне. Если спецификация класса памяти опущена в объявлении переменной на внутреннем уровне, то подразумевается
Объявление типа
Объявление типа Существует два особых вида объявления, в которых объявляется не переменная или функция, а тип данных. Первый вид позволяет определить тег и элементы структуры, объединения или перечислимого типа. После такого объявления имя типа (тег) может быть
3.2.2. Имя переменной
3.2.2. Имя переменной Имя переменной, или идентификатор, может состоять из латинских букв, цифр и символа подчеркивания. Прописные и строчные буквы в именах различаются. Язык С++ не ограничивает длину идентификатора, однако пользоваться слишком длинными именами типа
Пример 9-15. Длина переменной
Пример 9-15. Длина переменной #!/bin/bash# length.shE_NO_ARGS=65if [ $# -eq 0 ] # Для работы скрипта необходим хотя бы один входной параметр.then echo "Вызовите сценарий с одним или более параметром командной строки." exit $E_NO_ARGSfivar01=abcdEFGH28ijecho "var01 = ${var01}"echo "Length of var01 = ${#var01}"echo "Количество входных
Пример 11-15. "Сброс" переменной
Пример 11-15. "Сброс" переменной #!/bin/bash# unset.sh: Сброс переменной.variable=hello # Инициализация.echo "variable = $variable"unset variable # Сброс. # Тот же эффект дает variable=echo "(unset) variable = $variable" # $variable = null.exit 0exportКоманда export экспортирует переменную, делая ее