расположения. Так, описание
enum kids {nippy, slats, skip, nana, liz};
присваивает nаnа значение 3.
Присвоенные значения
Можно выбирать значения, которые вы хотите присвоить константам, но они должны быть целого типа (включая char). Для этого включите желаемыe значения в описание:
enum levels {low = 100, medium = 500, high = 2000};
Если вы присваиваете какое-либо значение одной константе и не присваиваете ничего константам, следующим за ней, то им будут присвоены последовательные значения, идущие за явно присвоенным значением. Например,
enum feline {cat = 20, tiger, lion, puma};
присваивает переменной tiger значение 21, переменной lion - значение 22 и puma - значение 23.
Операции
Теперь рассмотрим, что можно и нельзя делать с величинами типа enum.
Вы можете присвоить константу типа enum переменной того же типа
enum feline pet;
pet = tiger;
Нельзя использовать другие операции присваивания:
pet += cat; /* недопустимо */
Можно провести сравнение с целью выявления равенства или неравенства:
if ( per = = cat) ...
if ( color ! = violet)...
Нельзя использовать другие операции отношения:
if(color > yellow) /* недопустимо */
Можно применять арифметические операции к константам типа enum:
color = red + blue;
pet = puma * lion;
Имеют ли такие выражения какой-то смысл - это уже другой вопрос.
Нельзя использовать арифметическиe операции для переменных типа enum:
color = color + green; /* недопустимо */
Нельзя использовать операции yвеличения и уменьшения:
color++ ; /* недопустимо */
Нельзя использовать константу типа enum для индекса массива:
marbles[red] = 23; /* недопустимо */
ПРИМЕНЕНИЕ
Основная причина использования типа enum заключается в улучшении читаемости программ. Если вы имеете дело с некоторым видом цветовых кодов, то использование red и blue что обычно типы enum предназначены для использования внутри программы, а не для ввода-вывода. Например, если вы хотите ввести значение для переменной color типа spectrum, то должны были бы ввести, скажем, целое число 1, а не слово orange. (Конечно, можно было бы создать функцию ввода, которая восприняла бы строку "orange" и затем преобразовала бы ее в целое число orange.)
ПРИЛОЖЕНИЕ К. ТАБЛИЦА КОДОВ ASCII
Числовые преобразования
Числовые преобразования десятичное - шестнадцатеричное - восьмеричное - двоичное - ASCII
Десятеричное
Шестнадцатеричное
Восьмеричное
Двоичное
ASCII
Ключ*
X10
X16
X8
PXx
0
0
0
0
NUL
CTRL/I
1
1
1
10000001
SOH
CTRL/A
2
2
2
10000010
STX
CTRL/B
3
3
3
11
ЕТХ
CTRL/C
4
4
4
10000100
EOT
CTRL/D
5
5
5
101
ENQ
CTRL/E
6
6
6
110
АСК
CTRL/F
7
7
7
10000111
BEL
CTRL/G
8
8
10
10001000
BS
СTRL/H,возврат
9
9
11
1001
HT
CTRL/I,табуляция
10
0А
12
1010
LF
CTRL/J,новая строка
11
0B
13
10001011
VT
CTRL/K
12
0С
14
1100
FF
CTRL/L
13
0D
15
10001101
CR
CTRL/M,возврат
14
0E
16
10001110
SO
CTRL/N
15
0F
17
1111
SI
CTRL/O
16
10
20
10010000
DLE
CTRL/P
17
11
21
10001
C1
CTRL/Q
18
12
22
10010
DC2
CTRL/R
19
13
23
10010011
DC3
CTRL/S
20
14
24
10100
DC4
CTRL/T
21
15
25
10010101
NAK
CTRL/U
22
16
26
10010110
SYN
CTRL/V
23
17
27
10111
TB
CTRL/W
24
18
30
11000
CAN
CTRL/X
25
19
31
10011001
EM
CTRL/Y
26
1A
32
10011010
SUB
CTRL/Z
27
1B
33
11011
ESC
ESC,возврат
28
1С
34
10011100
FS
СТRL<
29
1D
35
11101
GS
CTRL/
30
1E
36
11110
RS
CTRL/=
31
1F
37
10011111
US
СTRL/-
32
20
40
10100000
SP
Пробел
33
21
41
100001
!
!
34
22
42
100010
"
"
35
23
43
10100011
#
#
36
24
44
100100
$
$
37
25
45
10100101
½
½
38
26
46
10100110
&
&
39
27
47
100111
'
'
40
28
50
101000
(
(
41
29
51
10101001
)
)
42
2А
52
10101010
*
*
43
2В
53
101011
+
+
44
2С
54
10101100
'
'
45
2D
55
101101
-
-
46
2Е
56
101110
.
.
47
2F
57
10101111
/
/
48
30
60
110000
0
0
49
31
61
10110001
1
1
50
32
62
10110010
2
2
51
33
63
110011
3
3
52
34
64
10110100
4
4
53
35
65
110101
5
5
54
36
66
110110
6
6
55
37
67
10110111
7
7
56
38
70
10111000
8
8
57
39
71
111001
9
9
58
3А
72
111010
:
:
59
3В
73
10111011
;
;
60
3С
74
111100
<
<
61
3D
75
10111101
=
=
62
3Е
76
10111110
>
>
63
3F
77
111111
?
?
64
40
100
11000000
@
@
65
41
101
1000001
А
А
66
42
102
1000010
в
в
67
43
103
11000011
с
с
68
44
104
1000100
D
D
69
45
105
11000101
Е
Е
70
46
106
11000110
F
F
71
47
107
1000111
G
G
72
48
110
1001000
н
Н
73
49
111
11001001
I
I
74
4A
112
11001010
J
J
75
4В
113
1001011
к
К
76
4С
114
11001100
L
L
77
4D
115
1001101
M
M
78
4Н
116
1001110
N
N
79
4F
117
11001111
0
0
80
50
120
1010000
P
Р
81
51
121
11010001
Q
Q
82
52
122
11010010
R
R
83
53
123
1010011
S
S
84
53
124
11010100
T
Т
85
55
125
1010101
U
U
86
56
126
1010110
V
V
87
57
127
11010111
W
W
88
58
130
11011000
X
X
89
59
131
1011001
Y
Y
90
5А
132
1011010
Z
Z
91
5В
133
11011011
[
[
92
5С
134
1011100
/
/
93
5D
135
11011101
]
]
94
5Е
136
11011110
^
^
95
5F
137
1011111
-
-
96
60
140
1100000
.
.
97
61
141
11100001
a
a
98
62
142
11100010
b
b
99
63
143
1100011
с
c
100
64