Бьерн Страуструп. Язык программирования С++ Второе дополненное издание



Pdf көрінісі
бет62/256
Дата11.07.2022
өлшемі2,87 Mb.
#37591
1   ...   58   59   60   61   62   63   64   65   ...   256
Байланысты:
Бьерн Страуструп. Язык программирования С . М Бином, 2011

2.5.1. Перечисления 
Есть способ связывания имен с целыми константами, который часто более удобен, чем описание с 
const. Например: 
enum { ASM, AUTO, BREAK }; 
Здесь определены три целых константы, которые называются элементами перечисления, и им 
присвоены значения. Поскольку по умолчанию значения элементов перечисления начинаются с 0 и 
идут в возрастающем порядке, то приведенное перечисление эквивалентно определениям: 
const ASM = 0; 
const AUTO = 1; 
const BREAK = 2; 
Перечисление может иметь имя, например: 
enum keyword { ASM, AUTO, BREAK }; 
Имя перечисления становится новым типом. С помощью стандартных преобразований тип 
перечисления может неявно приводиться к типу int. Обратное преобразование (из типа int в 
перечисление) должно быть задано явно. Например: 
void f() 

keyword k = ASM; 
int i = ASM; 
k = i // 
ошибка 
k = keyword(i); 
i = k; 
k = 4; // 
ошибка 

Последнее преобразование поясняет, почему нет неявного преобразования из int в перечисление: 
большинство значений типа int не имеет представления в данном перечислении. Описав переменную с 
типом keyword вместо очевидного int, мы дали как пользователю, так и транслятору определенную 
информацию о том, как будет использоваться эта переменная. Например, для следующего оператора 
keyword key; 
switch (key) { 
case 
ASM: 
// выполнить что-либо 
break; 
case 
BREAK: 
// выполнить что-либо 
break; 

транслятор может выдать предупреждение, поскольку из трех возможных значений типа keyword 
используются только два. Значения элементов перечисления можно задавать и явно. Например: 
enum int16 { 
sign=0100000, 


Бьерн Страуструп.
Язык программирования С++ 
 
66 
most_significant=040000, 
least_significant=1 
}; 
Задаваемые значения необязательно должны быть различными, положительными и идти в 
возрастающем порядке. 


Достарыңызбен бөлісу:
1   ...   58   59   60   61   62   63   64   65   ...   256




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет