2.1. Типы данных
В языке Си можно использовать различные типы данных для хранения и обработки информации. Данные каждого типа могут принимать значения в некотором заранее известном диапазоне. В памяти они занимают определенное количество байт. Таким образом, тип данных - это способ хранения информации в памяти.
В зависимости от реализации языка Си размер и диапазон изменения значений различных типов может меняться. В языке Турбо Си основными типами являются целые числа и вещественные (действительные) числа, иногда называемые числами с плавающей запятой. В таблице 2.1 приведены основные типы данных, доступных для языка ТС.
Основные типы данных языка ТС
Таблица 2.1
Тип данных | Название типа | Размер занимаемой памяти, Байт | Диапазон допустимых значений |
char | символ | 1 | -128... 127 |
unsigned char | беззнаковый символ | 1 | 0...255 |
int | целое | 2 | -32768...32767 |
unsigned int | беззнаковое целое | 2 | 0...65535 |
long | длинноецелое | 4 | -2147483648... 2147483647 |
unsigned long | беззнаковое длинное целое | 4 | 0...4294967295 |
float | вещественное | 4 | ±(3,4*10-38…3,4*1038) |
double | вещественное двойной точности | 8 | ±(1,7*10-308…1,7*10308) |
longdouble | длинное вещественное двойной точности | 10 | ±(3,4*10-4932... 3.4*104932) |
Типы данных char, intulong являются типами для хранения целых чисел. Действительно любой символ связан с целым числом – кодом этого символа по так называемой таблице символов ASCII. Этот символ необходим для идентификации нажатой на клавиатуре клавиши или при выводе на принтер.
Различие между целыми типами данных со знаком и без него (модификатор unsigned) состоит в том, как преобразуется старший бит целого числа. Для знакового числа старший бит определяет знак числа - если си равен нулю - число положительное, если равен единице - число отрицательное-
Типы float, double и longdouble являются типами данных для представления чисел с плавающей запятой.
2.2. Переменные
Переменная - это область памяти, имеющая имя и предназначенная для хранения меняющихся данных определенного типа,
Прежде чем использовать переменную в программе, необходимо объявить её. Для этого указывается тип данных, а затем имя переменной. В общем виде объявление переменной выполняется таким образом:
<ТипДанных> <ИмяПеременной>;
Например,
inti; /* объявление целой переменной i */
intj,n=5,k1,k2; /* объявление 4 целых переменных,
инициализация одной из них */
longg=10; /* объявление переменной g типа длинное целое и инициализация её начальным значением 10*/
floata, b=3.14, с;/* объявление 3 вещественных переменных а, b, с, инициализация начального значения b */
k1=2*n+1;
k2=3*j;
Как видно из примера, в одной строке можно объявить сразу несколько переменных одного типа. Имена (идентификаторы) переменных перечисляются через запятую. Объявление переменных должно заканчиваться точкой с запятой.
Вместе с объявлением переменной, ей можно присвоить начальное значение - этот процесс называется инициализацией. Переменные, которые объявлены, но не инициализированы, содержат случайные значения. Так, в выше приведенном примере после объявления переменных выполнены расчеты значений переменных k1 и k2. После расчета k1 будет иметь определенное значение и равно 11, значение же переменной k2 произвольное, так как в выражении значение переменной j неопределенно.
2.3. Имена переменных
Идентификаторы могут содержать буквы верхнего и нижнего регистров латинского алфавита:
A, B, C, ..., Z, a, b, c, ..., z ,
символ подчеркивания:
_
а также цифры:
0, 1, 2 ..., 9.
Нельзя в имени использовать русские буквы, специальные символы, знаки препинания, пробелы. Обязательным также является следующее условие: имя не должно начинаться с цифры.
Максимально допустимая длина имени переменной различается в зависимости от реализации языка. Язык ТС различает первые 32 символа имени переменной, хотя длина может быть и большей. Еще одной особенностью является то, что имена переменных, написанные строчными и прописными буквами, определяются компилятором ТС как различные, например идентификаторы:
NUM Num num
определяют три различные переменные. При написании программ на языке Си стараются придерживаться следующего правила объявления имен переменных - имя записывается с использованием строчных букв (в отличие от констант, записываемых прописными буквами). Это облегчает чтение и понимание программ. Ниже приведены варианты правильно записанных и неверных именах переменных
Правильные имена | Неправильные имена |
first | первый |
massiv1 | 1massiv |
hot_key | hot-key |
you_and_me | you.and.me |
number_5 | number№5 |
printf | |
if |
Два последних примера неправильных имен показывают, что нельзя в именах использовать ключевые слова языка ( if) и названия функций ( printf).
Кроме этого, хорошим стилем написания программы считается использование понятных имен переменных. Например, если в программе используется переменная «режим экрана», то можно конечно использовать имя m или r, но более наглядным будет имя mode_screen или rejim_ekran. К тому же при объявлении переменных желательно использовать в тексте программы комментарии, раскрывающие назначение введенных переменных.
2.4. Локальные и глобальные переменные. Область видимости переменной
В языке Си имеет очень важное значение имеет место в программе, в котором происходит объявление переменной. Это определяет область существования переменной (эту область называют областью видимости). Программа не будет компилироваться, если не описать все используемые переменные.
Различают локальные и глобальные переменные. Локальные переменные существуют и в теле функции или оператора управления. Локальные переменные на языке Си (но не С++) объявляются в начале блока – после открывающей фигурной скобки. Только после этого можно использовать их имена в выражениях и операторах. Область видимости локальной переменной – до соответствующей закрывающей фигурной скобки.
Глобальные переменные объявляются вне функций и существуют от точки объявления до конца программы. Соответственно, значение глобальной переменной можно использовать во любом месте программы.
Рассмотрим пример
#include <stdio.h>
inti=1; /* объявление и инициализация глобальной переменной */
floatf; /* объявление глобальной переменной */
voidfun(void); /* прототип функции пользователя */
void main(void)
{
intk,n; /* объявление локальных переменных */
floatg1; /* объявление локальной переменной */
...
}
voidfun(void) /* описание функции пользователя */
{
intj=5; /* объявление локальной переменной */
charch; /* объявление локальной переменной */
...
}
В программе объявлены глобальные и локальные переменные, а также помимо функции main() используется подпрограмма fun(). Глобальные переменные i и fможно использовать в обеих функциях. Значения локальных переменных r, n и g1 можно использовать только в теле функции main(), а переменных j и ch – в теле функции fun().
2.5. Константы
В языке Си представляют собой постоянные параметры, константы, которые не изменяются в ходе исполнения программ. Константы могут быть для любого типа данных. Примеры констант приведены в табл. 2.2.
Пример констант различных типов данных
Таблица 2.2.
Имя константы | Тип | Примеры |
символ | char | ’A’ ‘ч’ ‘\n’ |
целое | int | 10 -9345 32000 |
длинное целое | long | 100000 5L |
вещественное двойной точности | double | 3.14 1.23456789 –8.9е-40 |
2.5.1. Константы типа символ
Можно задавать в двух формах в виде отдельного символа, который записывается в одиночных кавычках ('А ') или в виде целого числа (55). При этом необходимо помнить, что константы, например, '0' и 0 описывают различные данные.
В языке Си существуют символьные константы, обозначающие специальные управляющие символы, такие как: перевод строки, звуковой сигнал, горизонтальная табуляция. Эти символы нельзя ввести с клавиатуры. Для их использования вначале записывается символ '\' – обратный слеш. Например, символ, означающий перевод строки, описывается так: '\n', горизонтальная табуляция – '\t'. Перечень основных специальных символов приведен в таблице 2.3.
Специальные символы
Таблица 2.3.
Обозначение | Назначение |
\n | перевод строки |
\r | возврат каретки |
\t | горизонтальная табуляция |
\v | вертикальная табуляция |
\b | стирание символа, возврат на шаг |
\f | перевод страницы |
\” | двойная кавычка |
\’ | апостроф, одиночная кавычка |
\ | обратный слеш |
\0 | нулевой символ, конец строки |
\а | звуковой сигнал |
\? | символ вопроса |
2.5.2. Целые константы
Эти константы не имеют десятичной точки и порядка числа. В программировании очень часто используются числа, записанные в других системах счисления - двоичной, восьмеричной и шестнадцатеричной. Для двух последних систем в языке Си есть специальная форма записи:
– для восьмеричных целых констант перед числом записывается ноль, и далее используются цифры 0…7;
– для шестнадцатеричных целых констант перед числом устанавливаются два символа 0х и далее используются цифры 0... 9, а также буквы латинского алфавита A, B, C, D, E, F обозначающие соответственно числа от 10 до 15. Примеры целых констант: