Файл: В., Фомин С. С. Курс программирования на языке Си Учебник.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 16.03.2024
Просмотров: 183
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Точность и диапазон представления чисел зависят от количества битов, отведенных для запоминания этого числа. В табл. 2 приведен пример изменения диапазона целых чисел в зависимости от числа бит представления числа.
Таблица 2. Зависимость значения целого числа от количества битов, отведенное на его представление
Максимальные и минимальные значения для целых | ||||
| 8 бит | 16 бит | 32 бита | 64 бита |
Минимальное значение (со знаком) | -128 | -32768 | -2147483648 | -9223372036854775808 |
Максимальное значение (со знаком) | 127 | 32767 | 2147483647 | -9223372036854775807 |
Минимальное значение (без знака) | 0 | 0 | 0 | 0 |
Максимальное значение (без знака) | 255 | 65535 | 4294967295 | 18446744073709551615 |
Существуют так называемые «модели данных», задающие правила представления чисел для различных платформ.
-
Модель ILP32. Типы int, long и указатель имеют длину 32 бита. Эта модель является стандартной для большинства 32-раз- рядных компьютеров. -
Модель ILP32LL. Типы int, long и указатель имеют длину 32 бита. Стандартом C99 введен новый тип - long long, имеющий длину 64 бита. Этот тип позволяет расширить длину представления чисел до минимального значения в 64 бита, но при этом не затрагиваются фундаментальные положения языка. -
Модель LP64. Тип long и указатель имеют длину 64 бита. -
Модель ILP64. Типы int, long и указатель имеют длину 64 бита. Тип int получает длину в 64 бита, что является весьма важным для языка. -
Модель LLP64 - указатели и новый тип long long имеют длину 64 бита. Типы int и long остаются 32-битовыми типами.
При переносе ПО из среды, поддерживающей модель данных ILP32, в среду, где обеспечивается модель ILP64, происходят фун-
Модели представления чисел на различных компьютерных платформах
371
даментальные изменения, так как указатели и данные типа int не являются более одного типа, а указатели и данные типа long являются 64-битовыми и выровнены на границу 64 бита. Эти различия могут потенциально повлиять на следующие операции и объекты:
-
округление данных (data truncation); -
работа с указателями; -
преобразование операндов к одному типу (перед выполнением операции); -
выравнивание данных и разделение данных; -
работа с константами; -
сдвиг данных (bit shifts) и битовые маски; -
битовые поля; -
перечислимые типы.
В этом учебнике мы будем ориентироваться на 32-разрядную архитектуру процессоров и 32-разрядные приложения как самые распространенные в настоящее время. В табл. 3 приведены типичные длины и диапазоны целых чисел для этой архитектуры.
Таблица 3. Размеры и диапазоны целых чисел на 32-битовой платформе
Типичные размеры и диапазоны для целых на 32-битовой платформе | |||
Тип | Ширина (в битах) | Минимальное значение | Максимальное значение |
signed char | 8 | -128 | |
unsigned char | 8 | 0 | |
short | 16 | -32,768 32,767 | 32,767 |
unsigned short | 16 | 0 | 65,535 |
Int | 32 | -2,147,483,648 | 2,147,483,647 |
unsigned int | 32 | 0 | 4,294,967,295 |
long | 32 | -2,147,483,648 2, | 2,147,483,647 |
unsigned long | 32 | 0 | 4,294,967,295 |
long long | 64 | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 |
unsigned long long | 64 | 0 | 18,446,744,073,709,551,615 |
Литература
-
Керниган Б., Ритчи Д., Фьюер А. Язык программирования Си: задачи по языку Си. - М.: Финансы и статистика, 1985. - 279 с. -
Керниган Б., Ритчи Д. Язык программирования Си. - М.: Финансы и статистика, 1992. - 272 с. -
Болски М.И. Язык программирования Си: справочник. - М.: Радио и связь, 1988. - 96 с. -
Хэнкок Л., Кригер М. Введение в программирование на языке Си. - М.: Радио и связь, 1986. - 192 с. -
Жешке Р. Толковый словарь стандарта языка Си. - СПб.: Питер, 1994. - 222 с. -
Уэйт М., Прата С., Мартин Д. Язык Си: руководство для начинающих. - М.: Мир, 1988. - 512 с. -
Банахан М., Раттер Э. Введение в операционную систему UNIX. - М.: Радио и связь, 1985. - 344 с. -
Белецкий Я. Энциклопедия языка Си. - М.: Мир, 1992. - 687 с. -
Подбельский В.В., Фомин С.С. Программирование на языке Си. - 2-е изд. - М.: Финансы и статистика, 1999. - 600 с. -
Подбельский В.В. Практикум по программированию на языке Си. - М.: Финансы и статистика, 2004. - 576 с. -
Джехани Н. Программирование на языке Си. - М.: Радио и связь, 1988. - 272 с. -
Юлин В.А., Булатова И.Р. Приглашение к Си. - Минск: Вышейшая школа, 1990. - 224 с. -
Уинер Р. Язык Турбо Си. - М.: Мир, 1991. - 380 с. -
Романовская Л.М., Русс Т.В., Свитковский С.Г. Программирование в среде Си для ПЭВМ ЕС.- М.: Финансы и статистика, 1991. - 352 с. -
Трой Д. Программирование на языке Си для персонального компьютера IBM PC. - М.: Радио и связь, 1991. - 430 с. -
Бочков С.О., Субботин Д.М. Язык программирования Си для персонального компьютера. - М.: СП «Диалог», 1990. - 384 с. -
Дерк Л. С и С++: справочник / пер. с нем. - М.: Восточная книжная компания, 1997. - 592 с. -
Тондо К., Гимпел С. Язык Си: книга ответов. - М.: Финансы и статистика, 1994. - 160 с.
Предметный указатель
A - Z
ANSI-стандарт, 138
ESC-sequence, см. Эскейп-последователь- ность
l-значение, 32, 35
MS-DOS, 326, 352
UNIX, 6, 8, 156, 163, 283, 322, 336, 343
Windows, 6, 235, 324, 354
А
Абстрактный тип, 264
Агрегирующий тип, 240
Аддитивная операция, 31, 33, 45, 66, 145, 146
Адрес, см. Операция получения адреса
Алфавит языка Си, 11
Аргумент макроса, 115, 130, 134, 135
Аргумент функции, 37, 38, 43, 61, 62, 67, 73, 95, 98, 178, 181, 204, 294
Арифметический тип, см. Тип арифметический
Арифметическое выражение, см. Выражение арифметическое
Арифметическое преобразование,
см. Операция преобразования
Б
Бинарные операции, 35
Бинарный режим, 287
Битовое поле, 51, 277, 282
Блок, 22, 40, 60, 68, 95, 155, 164, 227, 284, 352
Буфер ввода-вывода клавиатуры, 75 операционной системы, 284, 290
Буферизация, 322
В
Ввод, 43, 56, 73, 87, 89, 165, 200, 288, 292, 322, 328
Вещественная константа, см. Константа вещественная
Вложение блоков, см. Блок
инициализаторов, 290 комментариев,
см. Комментарий операторов цикла, 77, 84, 91 переключателей,
см. Оператор switch составных операторов,
см. Составной оператор структур, 253 условных операторов,
см. Условный оператор
Возвращаемое значение, см. Значение, возвращаемой функцией
Восьмеричная константа, см. Константа восьмеричная
Вывод, 43, 56, 60, 61, 123, 124, 165, 210, 365
Выражение, 32, 35, 42, 44, 46, 47, 67, 78, 96, 108, 145, 159, 183, 240, 323, 327 арифметическое, 54 леводопустимое,
см. Леводопустимое выражение
логическое, 46, 54, 69, 78 модифицируемое
именующее, 35, 47, см. l-значение
первичное, 98
постфиксной формы, 45 префиксной формы, 45 присваивания,
см. Операция присваивания
пустое, 42 условное, 54 целочисленное
константное, 125
Вычитание, см. Операция вычитания
Г
Глобальный объект, 56, 59, 124, 229, 230, 231 переменная, 227, 229, 230, 329, 332
Д
Двоичный режим обмена с файлами,
см. Бинарный режим
Декремент,
см. Операция «декремент»
Деление, см. Операция деления
Десятичная константа, см. Константа десятичная
Динамическая память, 230, 231, 232 выделение,
см. Память, динамическое выделение
управление, 159
Динамическое представление данных, 267
Динамические массивы, 154,
155, 157, 159, 161
см. Массив динамический объекты, 232, 266 односвязные списки, 269 структуры, 223
информационные, 267, 268, 269, 271
Директива препроцессора