Страница 9 из 85 1.2.2. Целый тип данных Для определения данных целого типа используются различные ключевые слова, которые определяют диапазон значений и размер области памяти, выделяемой под переменные (табл. 6). Таблица 6 Тип | Размер памяти в байтах | Диапазон значений | char | 1 | от -128 до 127 | int | Для IBM XT,AT,SX,DX 2 | | short | 2 | от -32768 до 32767 | long | 4 | от -2 147 483 648 до 2 147 483 647 | unsigned shar | 1 | oт 0 до 255 | unsigned int | Для IBM XT,AT,SX,DX 2 | | unsigned short | 2 | от 0 до 65535 | unsigned long | 4 | от 0 до 4 294 967 295 | Отметим, что ключевые слова signed и unsigned необязательны. Они указывают, как интерпретируется нулевой бит объявляемой переменной, т.е., если указано ключевое слово unsigned, то нулевой бит интерпретируется как часть числа, в противном случае нулевой бит интерпретируется как знаковый. В случае отсутствия ключевого слова unsigned целая переменная считается знаковой. В том случае, если спецификатор типа состоит из ключевого типа signed или unsigned и далее следует идентификатор переменной, то она будет рассматриваться как переменная типа int. Например: unsigned int n; unsigned int b; int c; (подразумевается signed int c ); unsigned d; (подразумевается unsigned int d ); signed f; (подразумевается signed int f ). Отметим, что модификатор-типа char используется для представления символа (из массива представление символов) или для объявления строковых литералов. Значением объекта типа char является код (размером 1 байт), соответствующий представляемому символу. Для представления символов русского алфавита, модификатор типа идентификатора данных имеет вид unsigned char, так как коды русских букв превышают величину 127. Следует сделать следующее замечание: в языке программирования С не определено представление в памяти и диапазон значений для идентификаторов с модификаторами-типа int и unsigned int. Размер памяти для переменной с модификатором типа signed int определяется длиной машинного слова, которое имеет различный размер на разных машинах. Так, на 16-ти разрядных машинах размер слова равен 2-м байтам, на 32-х разрядных машинах соответственно 4-м байтам, т.е. тип int эквивалентен типам short int, или long int в зависимости от архитектуры используемой ПЭВМ. Таким образом, одна и та же программа может правильно работать на одном компьютере и неправильно на другом. Для определения длины памяти занимаемой переменной можно использовать операцию sizeof языка программирования С, возвращающую значение длины указанного модификатора-типа. Например: a = sizeof(int); b = sizeof(long int); c = sizeof(unsigned long); d = sizeof(short); Отметим также, что восьмеричные и шестнадцатеричные константы также могут иметь модификатор unsigned. Это достигается указанием префикса u или U после константы, константа без этого префикса считается знаковой. Например: 0xA8C (int signed ); 01786l (long signed ); 0xF7u (int unsigned ); |