Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
mL_3_Osn_tip_07.doc
Скачиваний:
3
Добавлен:
29.04.2019
Размер:
154.62 Кб
Скачать

Классы памяти и инициализация переменных

Все переменные должны быть определены до первого их использования.

Если переменные определены вне главной функции, то эти переменные имеют класс памяти  extern  (внешний). Эти переменные являются глобальными, будут доступны во всех функциях, время их существования статическое (до конца выполнения программы).

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

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

Присвоение численного значения при определении переменной называется инициализацией. Инициализация бывает неявная, т.е. по умолчанию, и явная.

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

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

Явное присвоение численного значения при определении переменной называется явной инициализацией. Такая инициализация записывается так: int a1=5; int a2(5);

Переменные типа long

Переменные целого типа двойной точности вводятся с помощью служебного слова  long , что эквивалентно записи  long int . Переменная типа  long  занимает в памяти  4  байта или  32  бита. Старший бит знаковый.

Переменная типа  long  может принимать значения от –231 до 231–1 (от –2147483648 до 2 147 483 647).

С помощью служебного слова  unsigned  вводится беззнаковый целый тип двойной точности:  unsigned long . Переменная типа  unsigned long  может принимать значения от 0 до 232–1 (от 0 до 4 294 967 295).

Примеры определения переменных типа  long :

long y1,у2; long int с; signed long int а;

unsigned long z; unsigned long int g;

Если к максимальному числу типа  long  прибавить  1  , то получим минимальное число, а если от минимального числа отнять  1 , то получим максимальное число.

Например: long d;d=2147483647; d+=1; // d=–2147483648

unsigned long k; k=0; k-=1; // k=4294967295

Вводятся и выводятся данные типа int с помощью спецификаторов  %ld  (в десятичном виде),  %lo  (в восьмеричном виде),  %lx  (в 16-ричном виде),  %lu  (беззнаковые). Например:

scanf(“%ld %lu”, &d,&k);

printf(“d=%ld k=%ld \n”,d,k);

Константы целого типа

Константы целого типа – фиксированное изображение целых численных значений.

Целые константы могут быть десятичные, восьмеричные и шестнадцатеричные.

Десятичная целая константа – это константа, представленная десятичными цифрами, начинающаяся не с нуля.

int a1=10;

Восьмеричная константа всегда начинается с нуля, далее используют цифры от 0 до 7.

int a2=010; // a2=8

Шестнадцатеричные константы начинаются со значка или , далее следуют шестнадцатеричные цифры 0, …9, а, b, с, d, e, f (большие или малые).

int a3=0x10; // a3=16

Целые константы всегда положительные, поэтому, например, чтобы инициализировать переменную отрицательным значением, необходимо к константе присвоить унарный минус:

int a4=–15;

Целым константам по умолчанию всегда присваивается тип  int .

Для задания константы с двойной точностью, справа от константы записывается символ  l ( L ),

для задания беззнаковой константы типа  int  или  long  дописывается символ  u . Допустимо такое использование констант:

unsigned c1=40000u; long b=20L; 

unsigned long g=13Lu; unsigned long a=10ul;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]