Перечисления
Есть другой метод определения целых констант, который иногда более удобен, чем применение 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 // наименее значимый };
Такие значения не обязательно должны быть различными, возрастающими или положительными.