Результат работы программы

Пример

Модификация расположения объектов в оперативной памяти

Пример

Пример

Пример

Модификация объектов

Модификация или видоизменение объектов в языке Си применяется для того, чтобы расширить или, наоборот, сузить диапазон значений или область действия объекта. Инструкции, которые применяются для модификации, называются модификаторами.

Модификатор unsigned. Предназначен для того, чтобы объявлять переменные типов short, int, long беззнаковыми. Если переменную сделать беззнаковой, то при этом расширяется числовой диапазон абсолютного значения переменной. Это происходит из-за того, что один бит, который использовался под знак, используется под число.

-32768 <= int i <= 32768

О <= unsigned int i <= 65535

Пример

unsigned int i; unsigned long j;

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

 

main()  
{  
int i,j;  
long k;  
i= 30000;  
j= 20000;  
k= i+j; /^ОШИБКА!! i -k /

printf("\n%d+%d=%ld", i , j, k) ; }

Несмотря на то, что к объявлена как long, результат вычисления выражения

i+J получается типа int, поскольку / и j объявлены как int. В то же время значение

выражения выходит за границу типа int. Для того, чтобы не было ошибки,

необходимо модифицировать переменные следующим образом:

k=(long)i+(long]j;.

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

Модификатор extern предназначен для использования в данном программном модуле объекта, который объявлен в другом отдельном модуле.

extern тип объект 1, объект 2, ... ,объект п;

Модификатор static. При выполнении программы объекты могут быть расположены либо по фиксированным адресам оперативной памяти, либо по произвольным адресам по мере того, как эти объекты появляются.

Если объект расположен по некоторому фиксированному адресу, то он называется статическим (типичный пример — глобальные переменные).

Объект, который располагается в произвольном месте оперативной памяти, называется динамическим (пример — все локальные объекты). Если необходимо динамический объект сделать статическим, то используется модификатор static.

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

 

#. include <stdio .h>  
void stat( void)    
{        
  static int k= = 1;  
  printf ("\t k=%d" ,k) ;
  k++;      
}        

main()

{ int i;

for( i=0; i<5; i++) stat (); }

k=l k=2 k=3 k=4 k=5

Переменная к в функции stat зафиксирована в оперативной памяти. Инициализация к проводится только один раз — при первом вызове функции переменной к присваивается значение 1. При втором обращении к функции stat инициализация переменной к не будет производиться и на экран выведется 2. Значение к сохраняется в оперативной памяти, однако переменная не доступна из функции main.

Модификатор register. Модификатор предназначен для того, чтобы поместить переменную в один из регистров общего назначения процессора. Благодаря этому повышается скорость работы с данными. Это необходимо для создания управляющих программ, требующих высокую скорость обработки данных.