Главная страница

Курс на Си. Подбельский. Курс программирования на Си. В., Фомин С. С. Курс программирования на языке Си Учебник


Скачать 1.57 Mb.
НазваниеВ., Фомин С. С. Курс программирования на языке Си Учебник
АнкорКурс на Си
Дата18.02.2023
Размер1.57 Mb.
Формат файлаdocx
Имя файлаПодбельский. Курс программирования на Си.docx
ТипУчебник
#943863
страница39 из 42
1   ...   34   35   36   37   38   39   40   41   42


Таблица П3.7. Специальные функции (продолжение)

Функция

Прототип и краткое описание действий

Местона­хождение прототипа

memcmp

int memcmp(const void *s1, const void *s2, unsigned n);

Сравнивает посимвольно две области памяти s1 и s2 длиной n байт. Возвращает значение меньше нуля, если s1 < s2, нуль, если s1 == s2, и больше нуля, если s1 > s2

mem.h

memcpy

void *memcpy(void *p, const void *i, unsigned n); Копирует блок длиной n байт из области памяти i в область памяти p

mem.h

memicmp

int memicmp (const void *s1, const void *s2, unsigned n);

Подобна memcmp, за тем исключением, что игнориру­ются различия между буквами верхнего и нижнего регистра

mem.h

memmove

void *memmove (void *dest, const void *src, int n); Копирует блок длиной n байтов из src в dest.

Возвращает указатель dest

mem.h

memset

void *memset (void *s, int c, unsigned n);

Записывает во все байты области памяти s значение с. Длина области s равна n байт

mem.h

nosound

void nosound(void);

Прекращает подачу звукового сигнала, начатую функцией sound()

dos.h

peek

int peek(unsigned s, unsigned c);

Возвращает целое значение (слово), записанное в сегменте s со смещением с

dos.h

peekb

char peekb(unsigned s, unsigned c);

Возвращает один байт, записанный в сегменте s со смещением с, то есть по адресу s:c

dos.h

poke

void poke(unsigned s, unsigned c, int v);

Помещает значение v в слово сегмента s со смещением с, то есть по адресу s:c

dos.h

pokeb

void pokeb(unsigned s, unsigned c, char v);

То же, что и poke, но помещает один байт v по адресу s:c

dos.h

rand

int rand(void);

Возвращает псевдослучайное целое число из диапазона 0-215-1), может использовать функцию srand()

stdlib.h


Таблица П3.7. Специальные функции (окончание)

Функция

Прототип и краткое описание действий

Местона­хождение прототипа

signal

int signal(int sig);

Вызывает программный сигнал с номером sig. Ис­пользуется для обработки исключительных ситуаций в языке Си

signal.h

sound

void sound(unsigned f);

Вызывает звуковой сигнал с частотой f Гц

dos.h

srand

void srand(unsigned seed);

Функция инициализации генератора случайных чи­сел (rand); seed - любое беззнаковое целое число

stdlib.h

Приложение 4

МОДЕЛИ ПРЕДСТАВЛЕНИЯ

ЧИСЕЛ НА РАЗЛИЧНЫХ

КОМПЬЮТЕРНЫХ ПЛАТФОРМАХ

При разработке программных продуктов необходимо учитывать платформу (аппаратная и программная составляющие), в среде которой реализован компилятор с языка Си, и платформу, в среде которой будет эксплуатироваться созданный программный продукт, так как платформа существенным образом влияет на размерность данных различных типов.

Основными характеристиками платформы являются:

  • тип процессора;

  • разрядность процессора;

  • разрядность приложения (его ориентация на аппаратную плат­форму);

  • размерность данных (количество битов, отводимое для пред­ставления данных).

В табл. 1 приведены сведения о разрядности процессоров, при­ложений и данных.

Таблица 1. Характеристики различных платформ

Процессоры

4 бита 8 бит 12 бит 16 бит 18 бит 24 бита 31 бит 32 бита 36 бит 48 бит 64 бита 128 бит

Приложения

4 бита 8 бит 16 бит 32 бита 64 бита 128 бит

Размерность данных

4 бита 8 бит 16 бит 32 бита 64 бита 128 бит

полубайт байт октет слово «двойное слово» «суперслово»

В настоящее время наиболее распространены 32-разрядная ар­хитектура процессоров и 32-разрядные приложения. Однако в бли­жайшем будущем 64-битовые системы могут стать весьма распро­страненными, и это обстоятельство необходимо учитывать при раз­работке программных систем.

Точность и диапазон представления чисел зависят от количества битов, отведенных для запоминания этого числа. В табл. 2 приведен пример изменения диапазона целых чисел в зависимости от числа бит представления числа.

Таблица 2. Зависимость значения целого числа от количества битов, отведенное на его представление

Максимальные и минимальные значения для целых




8 бит

16 бит

32 бита

64 бита

Минимальное значение (со знаком)

-128

-32768

-2147483648

-9223372036854775808

Максимальное значение (со знаком)

127

32767

2147483647

-9223372036854775807

Минимальное значение (без знака)

0

0

0

0

Максимальное значение (без знака)

255

65535

4294967295

18446744073709551615

Существуют так называемые «модели данных», задающие прави­ла представления чисел для различных платформ.

  1. Модель ILP32. Типы int, long и указатель имеют длину 32 би­та. Эта модель является стандартной для большинства 32-раз- рядных компьютеров.

  2. Модель ILP32LL. Типы int, long и указатель имеют длину 32 бита. Стандартом C99 введен новый тип - long long, имею­щий длину 64 бита. Этот тип позволяет расширить длину пред­ставления чисел до минимального значения в 64 бита, но при этом не затрагиваются фундаментальные положения языка.

  3. Модель LP64. Тип long и указатель имеют длину 64 бита.

  4. Модель ILP64. Типы int, long и указатель имеют длину 64 би­та. Тип int получает длину в 64 бита, что является весьма важ­ным для языка.

  5. Модель 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

Литература

  1. Керниган Б., Ритчи Д., Фьюер А. Язык программирования Си: задачи по языку Си. - М.: Финансы и статистика, 1985. - 279 с.

  2. Керниган Б., Ритчи Д. Язык программирования Си. - М.: Финансы и статистика, 1992. - 272 с.

  3. Болски М.И. Язык программирования Си: справочник. - М.: Радио и связь, 1988. - 96 с.

  4. Хэнкок Л., Кригер М. Введение в программирование на языке Си. - М.: Радио и связь, 1986. - 192 с.

  5. Жешке Р. Толковый словарь стандарта языка Си. - СПб.: Питер, 1994. - 222 с.

  6. Уэйт М., Прата С., Мартин Д. Язык Си: руководство для начинаю­щих. - М.: Мир, 1988. - 512 с.

  7. Банахан М., Раттер Э. Введение в операционную систему UNIX. - М.: Радио и связь, 1985. - 344 с.

  8. Белецкий Я. Энциклопедия языка Си. - М.: Мир, 1992. - 687 с.

  9. Подбельский В.В., Фомин С.С. Программирование на языке Си. - 2-е изд. - М.: Финансы и статистика, 1999. - 600 с.

  10. Подбельский В.В. Практикум по программированию на языке Си. - М.: Финансы и статистика, 2004. - 576 с.

  11. Джехани Н. Программирование на языке Си. - М.: Радио и связь, 1988. - 272 с.

  12. Юлин В.А., Булатова И.Р. Приглашение к Си. - Минск: Вышейшая школа, 1990. - 224 с.

  13. Уинер Р. Язык Турбо Си. - М.: Мир, 1991. - 380 с.

  14. Романовская Л.М., Русс Т.В., Свитковский С.Г. Программирование в среде Си для ПЭВМ ЕС.- М.: Финансы и статистика, 1991. - 352 с.

  15. Трой Д. Программирование на языке Си для персонального компьютера IBM PC. - М.: Радио и связь, 1991. - 430 с.

  16. Бочков С.О., Субботин Д.М. Язык программирования Си для персо­нального компьютера. - М.: СП «Диалог», 1990. - 384 с.

  17. Дерк Л. С и С++: справочник / пер. с нем. - М.: Восточная книжная компания, 1997. - 592 с.

  18. Тондо К., Гимпел С. Язык Си: книга ответов. - М.: Финансы и стати­стика, 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

Директива препроцессора
1   ...   34   35   36   37   38   39   40   41   42


написать администратору сайта