Array M. УЭИТ - Язык Си - руководство для начинающих
- Название:Язык Си - руководство для начинающих
- Автор:
- Жанр:
- Издательство:Мир
- Год:1988
- Город:Москва
- ISBN:5-03-001309-1 /русск./
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Array M. УЭИТ - Язык Си - руководство для начинающих краткое содержание
Язык Си — руководство для начинающих
Язык Си - руководство для начинающих - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
color = green;
На первый взгляд типы enumмогут показаться похожими на определенные пользователем порядковые типы языка Паскаль. Действительно, сходство есть, но есть и существенные различия, поэтому, если вы знаете Паскаль, то нс придете к такому заключению.
Рассмотрим характер этих новых констант и операций, которые можно выполнять с использованием переменных типа
enum константы
Как компьютер запоминает что-нибудь подобное red? Он может рассматривать это как символьную строку, но у нее нет кавычек. И действительно, redи другие enumконстанты запоминаются как целые числа. Например, попробуйте выполнить
printf("red = %d, orange = %d\n", red, orange);
и с учетом вышеуказанных описании вы получите такой результат:
red = 0, orange = 1
По существу переменная redи ее "сестры" действуют как синонимы целых чисел от 0 до 5. Результат подобен использованию
#define red 0
за исключением того, что соответствие, установленное при помощи оператора enumболее ограниченно. Например, если indexявляется переменной типа int, то оба нижеследующих оператора недопустимы:
index = blue; /* несоответствие типа */
color = 3; /* несоответствие типа */
Позже мы рассмотрим другие ограничения при использовании констант и переменных типа enum. Сначала более внимательно рассмотрим значения констант типа enum.
Значения по умолчанию
Наш пример проиллюстрировал присваивание константам значений по умолчанию. Константам, появляющимся в описании enum, присваиваются целые числа 0, 1, 2 и т. д. в порядке их расположения. Так, описание
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 | Ключ* |
| X 10 | X 16 | X 8 | PX x | ||
| 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 | 144 | 11100100 | d | d |
| 101 | 65 | 145 | 1100101 | е | е |
| 102 | 66 | 146 | 1100110 | f | f |
| 103 | 67 | 147 | 11100111 | g | g |
| 104 | 68 | 150 | 11101000 | h | h |
| 105 | 69 | 151 | 1101001 | i | I |
| 106 | 6А | 152 | 1101010 | j | j |
| 107 | 6В | 153 | 11101011 | k | k |
| 108 | 6С | 154 | 1101100 | l | 1 |
| 109 | 6D | 155 | 11101101 | m | m |
| 110 | 6Е | 156 | 11101110 | n | n |
| 111 | 6F | 157 | 1101111 | o | о |
| 112 | 70 | 160 | 11110000 | p | p |
| 113 | 71 | 161 | 1110001 | q | q |
| 114 | 72 | 162 | 1110010 | r | r |
| 115 | 73 | 163 | 11110011 | s | s |
| 116 | 74 | 164 | 1110100 | t | t |
| 117 | 75 | 165 | 11110101 | u | u |
| 118 | 76 | 166 | 11110110 | v | v |
| 119 | 77 | 167 | 1110111 | w | w |
| 120 | 78 | 170 | 1111000 | x | x |
| 121 | 79 | 171 | 11111001 | y | y |
| 122 | 7A | 172 | 11111010 | z | z |
| 123 | 7B | 173 | 1111011 | R | R |
| 124 | 7С | 174 | 11111100 | / | / |
| 125 | 7D | 175 | 1111101 | T | T |
| 126 | 7Е | 176 | 1111110 | ~ | ~ |
| 127 | 7F | 177 | 11111111 | DEL | DEL,отмена символа |
Интервал:
Закладка: