Litvek - онлайн библиотека >> Стивен Прата и др. >> C, C++, C# и др. >> Язык Си - руководство для начинающих >> страница 114
расположения. Так, описание

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
Litvek: лучшие книги месяца
Топ книга - Казус Кукоцкого [Людмила Евгеньевна Улицкая] - читаем полностью в LitvekТоп книга - Манюня [Наринэ Юрьевна Абгарян] - читаем полностью в LitvekТоп книга - Вафельное сердце [Мария Парр] - читаем полностью в LitvekТоп книга - Хранитель древностей [Юрий Осипович Домбровский] - читаем полностью в LitvekТоп книга - Антисуворов. Большая ложь маленького человечка [Алексей Валерьевич Исаев] - читаем полностью в LitvekТоп книга - Цель-2. Дело не в везении  [Элияху Моше Голдратт] - читаем полностью в LitvekТоп книга - Эмоциональный интеллект [Дэниел Гоулман] - читаем полностью в LitvekТоп книга - Разозленные [Джейн Энн Кренц] - читаем полностью в Litvek