2.4.7 Перечисления
2.4.7 Перечисления
Есть другой метод определения целых констант, который иногда более удобен, чем применение const. Например:
enum (* ASM, AUTO, BREAK *);
перечисление определяет три целых константы, называемых перечислителями, и присваивает им значения. Поскольку значения перечислителей по умолчанию присваиваются начиная с 0 в порядке возрастания, это эквивалентно записи:
const ASM = 0; const AUTO = 1; const BREAK = 2;
Перечисление может быть именованным. Например:
enum keyword (* ASM, AUTO, BREAK *);
Имя перечисления становится синонимом int, а не новым типом. Описание переменной keyword, а не просто int, может дать как программисту, так и компилятору подсказку о том, что использование преднамеренное. Например:
keyword key;
switch (key) (* case ASM: // что-то делает break; case BREAK: // что-то делает break; *)
побуждает компилятор выдать предупреждение, поскольку только два значения keyword из трех используются.
Можно также задавать значения перечислителей явно. Например:
enum int16 (* sign=0100000, // знак most_significant=040000, // самый значимый least_significant=1 // наименее значимый *);
Такие значения не обязательно должны быть различными, возрастающими или положительными.