Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C++ лекции.doc
Скачиваний:
22
Добавлен:
21.04.2019
Размер:
536.06 Кб
Скачать

4. Переменные, типы переменных, литералы

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

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

Например, литералами являются те строки, которые вы уже писали в вызовах функций printf и system. Однако литералами можно задать только некоторые постоянные величины, а в программах обычно необходимо изменять данные. Для этого необходимо сохранить значение в переменную.

Переменная — это именованная область памяти, содержащей некоторые данные.

Когда вы создаете новую переменную, машина выделяет необходимую область в памяти для хранения данных, а компилятор связывает эту область с тем именем, которое вы даете своей переменной. Для того, что бы объявить переменную, необходимо указать тип переменной, затем через пробел имя переменной.

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

Например, запись:

int some_integer_value;

выделит в памяти область, достаточную для хранения переменной типа int и свяжет с этой областью имя some_integer_value. Иными словами, эта запись создаст переменную типа int с именем some_integer_value.

В определении типа переменной звучат такие фразы, как область значений и набор операций. Дело в том, что в зависимости от типа, в переменную можно сохранить разные данные, и при использовании эта переменная будет обрабатываться по-разному.

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

Строго говоря, булевых и символьных типов в C не существует — и те и другое являются целочисленными переменными.

Во многих языках существует так же примитивный строковый тип, однако в C строка — это массив символов, по-этому здесь строковые типы не указаны.

Целочисленные:

  • int

  • short int или short

  • long int или int

Вещественные:

  • float

  • double

  • long double

Булевы:

  • bool

Символьные:

  • char

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

Тип

Диапазон значений

Размер (байт)

bool

true и false

1

signed char

–128 … 127

1

unsigned char

0 … 255

1

signed short int

–32 768 … 32 767

2

unsigned short int

0 … 65 535

2

signed int

–2 147 483 648 … 2 147 483 647

4

unsigned int

–2 147 483 648 … 2 147 483 647

4

signed long int

–2 147 483 648 … 2 147 483 647

4

unsigned long int

0 … 4 294 967 295

4

float

3.4e–38 … 3.4e+38

4

double

1.7e–308 … 1.7e+308

8

long double

3.4e–4932 … 3.4e+4932

10

Таким образом, все эти объявления переменных являются верными:

int i;

int some_int;

long double very_long_value;

bool flag;

unsigned char letter1, letter2;

Заметьте, что в последней строке объявляются сразу две переменные типа unsigned char.

Именем переменной может быть любая последовательность символов, начинающаяся с латинской буквы или с подчеркивания и содержащая только латинские буквы, подчеркивания и цифры. Например «some_value», «value1», «_my_value» - валидные (допустимые) имена переменных, а «1value», «переменная», «my value» - невалидные имена переменных. Кроме того, вы не можете использовать зарезервированные слова (такие, как имена типов переменных) в качестве имени переменной.

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

Не следует использовать переменную, пока она не инициализирована, то есть ей не присвоено какое-нибудь значение (то есть пока значение не записано в область памяти, ассоциированную с этой переменной).

Если переменная используется без инициализации, то результат этого действия может быть непредсказуем, поскольку в памяти, связанной с этой переменной, может храниться т. н. мусор — те данные, которые оставила предыдущая программа, занимавшая эту память. Вы можете увидеть их, выведя неинициализированную переменную с помощью printf.

Инициализация переменной может происходить как после объявления, так и во время объявления. Например:

int first_var;

first_var = 10;

int second_var = 10;

int third_var = 10, fourth_var = 20, fifth_var;

В результате выполнения этого кода будет создано 5 переменных. first_var сначала объявляется, а инициализируется в отдельной строке. second_var инициализируется значением 10 при объявлении. Переменные third_var, fourth_var и fifth_var объявляются одновременно, первая из них инициализируется значением 10, вторая — значением 20, а третья остается неинициализированной.

int int_var = 120;

long long_var = 10000000L;

char char_var = '\n';

bool bool_var = true;

double double_var = 0.1;

float float_var = 0.F;

В этом примере объявляются и инициализируются переменные различных типов, при этом используются литералы различных типов. Так, символ «L» в конце второй строки означает, что 10000000 является длинным целым (long int), любое значение, содержащее точку (в том числе .0) — это вещественное double, если же в конце вещественного стоит символ «F» - это тип float. Символы пишутся в одинарных кавычках, а булева величина может быть инициализирована значениями true и false.

Кроме приведенных примеров литералов существуют так же способы задания целочисленных значений в восьмеричном и шестнадцатеричном представлениях:

int hex = 0xA004;

int oct = 0127;

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