Константы с плавающей точкой


В дополнение к обычному типу (который по умолчанию трактуется как double) можно указать тип float. Например, 2.774F относится к типу float . Это дает экономию памяти. Константы с плавающей точкой будут представлены в памяти процессора более плотно.

Строковые константы

В Турбо Си компилятор распознает символьные строки, размещаемые в тексте на нескольких физических строках, и автоматически выполняет их конкатенацию (сцепление).

Char text[] =”this is a”

“ very long string”

Компилятор выполнит склейку этих строк и сгенерирует в программе массив text требуемого размера.

Константные выражения

В дальнейшем описании термин константное выражение определяет выражение, содержащее одни константы (значения или адреса). Компилятор сразу вычисляет эти выражения до выполнения программы

Пример
#define maxline 1000

char line [maxline +1];

В момент выполнения программы память под массив line уже будет выделена в момент загрузки на 1001 ячейку типа char.

Описания переменных и классы памяти

Описание переменных задается в виде:
[память] тип или тип [память] } и список описателей;

где память - это одно из ключевых слов auto, static, extern, register.

Автоматические переменные (auto) локальны по отношению к каждому блоку (составному оператору). При выходе из блока они уничтожаются, а при входе в блок – для них выделяется память. Статические переменные также локальны по отношению к блоку, но их значения сохраняются даже при выходе из блока и могут использоваться при повторном входе в блок.

Блок или составной оператор в Си ограничивается скобками {…}.

Внешние переменные, объявленные вне функции и на которые, возможно, ссылаются посредством extern, существуют и сохраняют свои значения на протяжении выполнения всей программы. Ключевое слово extern указывает, что переменная декларируется где-либо далее в файле или в другом файле (это указание компилятору и фактически в данном месте прграммы память под переменную не выделяется). Они могут использоваться для передачи значений между отдельно транслируемыми функциями. Фактически, они статически определены. Регистровые переменные хранятся в (быстрых) регистрах, если это возможно; они локальны в блоке и уничтожаются при выходе из блока. Эти переменные позволяют повысить скорость выполнения программы. Описание register выполнимо только при описании автоматических переменных и к формальным параметрам функции.

Пример

int func (a,b);

register int a,b;

{

register int i;

register char d ;

….

}

Если указано register, то int можно опускать (int используется по умолчанию).

Регистры выделяются для переменных компилятором по возможности, т.е. если свободных регистров недостаточно, то используются ячейки памяти.

Список_описателей в декларациях для простых переменных содержит пары вида «имя-переменной инициатор», разделенные запятыми, где инициатор имеет вид:
«= выражение»

Инициатор задает начальные значения для объектов.

1. Все выражения для статических и внешних переменных (имеется в виду явно, без extern) должны быть константными выражениями или выражениями, сводящимися к адресам предварительно описанных переменных (для указательных переменных), при этом допускается смещение от них на величину, заданную константным выражением.

2. Автоматические и регистровые переменные могут инициироваться произвольными выражениями, включающими константы и предварительно описанные переменные и функции.

По умолчанию они не инициализуются и вначале содержат “мусор”.

По умолчанию статические и внешние переменные инициируются нулем - т.е. для int - это 0, для float i double это 0.0, для char - это ‘\0’.

Примеры

int i=1;

float x=3.1e-2, y=3.145;

Вне тела функции эти переменные являются внешними, а в теле функции автоматическими.

 

Пример

В теле функции или внутри вложенного блока:

double y = func (CONST1)+10;

Описание корректно, если func уже описана и CONST1 константа или вместо CONST1 некоторая уже ранее описанная и инициированная переменная.

Для автоматических и регистровых, если инициатор не указан, то начальное значение не определено (“пусто”).

Ключевое слово static помимо указания статической переменной ограничивает еще и область видимости имени данным файлом. Static применимо и к ltrkfhfwbzv функций.



Дата добавления: 2016-05-26; просмотров: 1252;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.009 сек.