Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Подбельский Фомин_Программирование на языке СИ_...doc
Скачиваний:
356
Добавлен:
10.08.2019
Размер:
53.81 Mб
Скачать

Определение переменных.

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

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

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

тип список_имен_переменных;

где имена переменных - это выбранные программистом идентификаторы, которые в списке разделяются запятыми;

тип - один из уже упоминаемых (в связи с константами) типов.

Определены целочисленные типы (перечислены в порядке неубывания длины внутреннего представления):

char - целый длиной не менее 8 бит;

short int - короткий целый (допустима аббревиатура short);

int - целый;

long - длинный целый.

Каждый из целочисленных типов может быть определен либо как знаковый signed либо как беззнаковый unsigned (по умолчанию signed).

Различие между этими двумя типами - в правилах интерпретации старшего бита внутреннего представления. Спецификатор signed требует, чтобы старший бит внутреннего представления воспринимался как знаковый; unsigned означает, что старший бит внутреннего представления входит в код представляемого числового значения, которое считается в этом случае беззнаковым. Выбор знакового или беззнакового представления определяет предельные значения, которые можно представить с помощью описанной переменной. Например, на IBM PC переменная типа unsigned int позволяет представить числа от 0 до 65535, а переменной типа signed int (или просто int) соответствуют значения в диапазоне от -32768 до +32767. Чтобы глубже понять различие между целой величиной и целой величиной без знака, следует обратить внимание на результат выполнения унарной операции "-" (минус) над целой величиной и целой величиной без знака. Для целой величины результат очевиден и тривиален. Результатом при использовании целой величины без знака является

2n - (значение_величины_без_знака),

где n - количество разрядов, отведенное для представления величины без знака.

Например, если переменная k типа int равна 16, то значением - k будет -16. Если переменная b типа unsigned int равна 16, то значением - b на IBM PC является 65520.

По умолчанию, при отсутствии в качестве префикса ключевого слова unsigned любой целый тип считается знаковым (signed). Таким образом, употребление совместно со служебными словами char, short, int, long префикса signed излишне. Допустимо отдельное использование обозначений (спецификаторов) "знаковости". При этом

signed эквивалентно signed int;

unsigned эквивалентно unsigned int.

Примеры определений целочисленных переменных:

Обратите внимание на необходимость символа "точка с запятой" в конце каждого определения.

Стандартом языка введены следующие вещественные типы:

float - вещественный одинарной точности;

double - вещественный удвоенной точности;

long double - вещественный максимальной точности.

Значения всех вещественных типов в ЭВМ представляются с "плавающей точкой", т.е. с мантиссой и порядком, как было рассмотрено при определении констант (§1.2). Примеры определений вещественных переменных: