Урок 3.2.4. Модификаторы переменных

3.2.4. Модификаторы переменных

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

Обычно переменной соответствует стандартная длина, обусловленная аппаратными особенностями используемого компьютера. Для компьютеров IBM PC стандартная длина слова памяти 2/4 байта и тип переменной, например, int определяет соответствующую интерпретацию - первый бит разряд знака, а остальные 15/31 бит содержат значение числа. Применяемые совместно с типом или сами по себе модификаторы short (короткий), long (длинный), signed (знаковый), unsigned (беззнаковый) уточняют интерпретацию значений переменных.

По мысли разработчиков языка модификаторы short и long должны были соответствовать длинам, отличающимся от стандартных. Однако компилятор Си на модификатор short не реагирует укорачиванием длины, а long расширяет переменную типа int до 4-х байтов, переменную типа float до 8-ми байтов и переменную типа double до 10-ти байтов. Модификаторы signed и unsigned задают интерпретацию значения переменной как знаковую и беззнаковую соответственно и действуют только для типов int u char.

Рассмотренные модификаторы можно использовать при описании переменных, указывая их перед ключевым словом, определяющим _тип_:

<модификатор(ы)> <тип> <список имен переменных>;

Примеры описания переменных с модификаторами:

unsigned int a,b,c;

unsigned long int R1,R2,C1,C2;

unsigned short int gradus,delta;

Если используется более одного модификатора, то они не должны противоречить друг другу с точки зрения компилятора и, конечно, здравого смысла. Например, нельзя одновременно задать для переменной модификаторы short u long или unsigned u signed.

Если <тип> при описании переменных не указан, а имеются только модификаторы, то предполагается, что тип переменных int и приведенные операторы можно записать так:

unsigned a, b, c;

unsigned long R1, R2, C1, C2;

signed short gradus, delta;

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

unsigned int a = 6238u, b = 35u, c = 79u;

Результат действия описанных модификаторов на основные типы данных отражает таблица 4.4

Таблица 4.4 Действие модификаторов

Тип и стандартная длина Модификатор Реакция компилятора длина
int (2/4 байта) shortlong

signed

 

unsigned

Нет.Расширение длины до 4-х байтов.

Используется для улучшения документируемости программ.

Расширение диапазона положительных значений. Гарантия, что переменная не примет отрицательного значения.

float (4 байта) shortlong

signed

unsined

Нет.Расширение длины до 8-ми байтов

Нет.

Нет.

double (8 байтов) shortlong

signed

unsined

Нет.Расширение длины до 10-ти байтов.

Нет.

Нет.

char (1 байт) shortlong

signed

 

unsigned

Нет.Нет.

Первый бит рассматривается, как  знаковый, остальные 7 определяют значение. Наибольшее значение 127.

Значение от 0 до 255. Гарантия непринятия отрицательного значения.

Расширение длины переменной, естественно приводит к расширению диапазона значений.

Рассмотрим еще два модификатора – const и volatile.

Mодификатор const говорит компилятору о том, что значение переменной присваивается на этапе компиляции путем инициализации и никаким образом не должно изменяться во время выполнения операторами программы. Например, оператор описания:

const float pi=3.14155926;

делает недопустимым наличие в программе, например, такого оператора: pi=3.0;

Модификатор volatile - полная противоположность модификатору const и говорит о том, что значение переменной может быть изменено не только в программе, но и каким-либо внешним воздействием со стороны операционной системы, например таким как программа прерываний или порт ввода-вывода.

 

рассказать друзьям и получить подарок

Оставить комментарий

Ваш email не будет опубликован. Обязательные поля отмечены *

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Translate Переводчик

Подписка на новости

SmartResponder.ru
Ваш e-mail: *
Ваше имя: *

Хостинг для Wordpress сайтов