ДАННЫЕ В ПРОГРАММЕ НА СИ


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

Константы

Константы — это фиксированные значения. Значение, будучи установлено, больше не меняется.
Типы констант:
a) Целые и длинные целые. Записываются в десятичной, восьмеричной и шестнадцатеричной системе счисления.
Десятичная система:
Размер: Диапазон чисел:
16 битов — ? 32768 знаковое и
65535 беззнаковое (u) — unsigned
32 бита — ? 2147483648 знаковое длинное и
4294967295 беззнаковое длинное (ul) unsigned long
Восьмеричная система:
Если число начинается с цифры 0, оно интерпретируется как восьмиричное число
16 битов — 0 ? 077777
0100000 ? 0177777 u
32 бита — 0200000 ? 017777777777 l
020000000000 ? 037777777777 ul
Шестнадцатеричная система:
Если число начинается с символа 0х, то оно интерпретируется как шестнадцатиричное
16 битов — 0x0000 ? 0x7FFF
0x8000 ? 0xEFFF u
32 бита — 0x10000 ? 0x7FFFFFFF l
0x80000000 ? 0xFFFFFFFF ul

b) Вещественные константы. Это числа с плавающей точкой. Значение имеет дробную часть. По умолчанию все вещественные константы имеют тип двойной точности double. Занимают в памяти 8 байт. Диапазон значений ? 1 e ?308.
Принудительно можно задать формат одинарной точности float. Число будет занимать 4 байта. (5.75 f)
А также расширенной точности – long – 10 байт. (3.14L)
Знак + можно не писать. Разрешается опускать либо десятичную точку, либо экспоненциальную часть, но не одновременно (.2; 4е16). Можно не писать дробную либо целую часть, но не одновременно (100.; .8е-5)

c) Символьные константы. Это набор символов, используемых в ЭВМ.
Делятся на 2 группы: печатные и не печатные (управляющие коды). Символьная константа включает в себя только 1 символ, который необходимо заключить в апострофы и занимает 1 байт памяти.
Любой символ имеет своё двойное представление в таблице ASCII
‘А’ ‘ ‘
47 20
Как целый тип данных ‘A’=01018, 010000012, 4116, 6510.
Управляющие коды начинаются с символа \ и тоже заключаются в апострофы. Наиболее распространенные управляющие коды:
\n – переход на новую строку
\t – табуляция (сдвиг курсора на некоторое фиксированное значение)
\b – шаг назад (сдвиг на одну позицию назад)
\r – возврат каретки (возврат к началу строки)
\f – подача бланка (протяжка бумаги на 1 страницу)
\\ — слеш
\’ — апостроф
\” — кавычки
Последние три знака могут выступать символьными константами, а также применяться в функции printf() , поэтому применение их в качестве символов может привести к ошибке. Например, если мы хотим вывести строку «Символ \ называется слеш», то оператор должен выглядеть так:
Printf( «Символ \\ называется слеш»

Строковые константы — содержат последовательность из 1 и более символов, заключённых в » «. Расходуется по 1 байту на любой символ + 1байт на так называемый ноль-символ — признак конца строки. Ноль-символ – не цифра ноль, он означает, что количество символов в строке (N) должно быть на 1 байт больше (N+1), чтобы обозначать конец строки.

Базовые стандартные типы

Если величина является константой, компилятор сам может распознать ее тип по тому виду, в котором она введена. В случае с переменными, обязательно должен быть объявлен ее ТИП. Программа на СИ не будет выполняться, если не описать все используемые переменные. Тип является характеристикой данных. Под типом понимается совокупность информации о данном: сколько ему нужно выделить памяти, какой вид имеет его представление, какие над ним определены операции. Для выполнения вычислений в программе задаются переменные различных типов. Переменная – это именованный объект, который может принимать различные значения в процессе выполнения программы. В Си определены следующие стандартные типы данных: а) для целых чисел объем диапазон чисел int 2 байта ? 32768 signed int ? 32768 знаковое unsigned int 0…65535 беззнаковое chort int короткое целое – тождественно int long int 4 байта ? 2147483648 длинное целое signed long int ? 2147483648 знаковое unsigned long int 0…4294967295 беззнаковое б) с плавающей точкой float 4 байта 10?38 double 8 байт 10?308 двойной точности long double 10 байт 10?4932 расширенной точности Существует еще один тип данных — char. Он в основном используется для символов, но может также использоваться для целых чисел char 1 байт ?128 signed char ?128 unsigned char 0 … 256 При описании данных, необходимо ввести тип, за которым должно идти имя переменной (описание). Можно в один оператор объединять несколько имен переменных одного типа, разделенных запятой. Операторы должны заканчиваться точкой с запятой. Пр.: int num; int cows, hogs; Переменным можно присваивать некоторое значение перед началом обработки (инициализировать). В качестве инициализации переменной часто применяются константы. Пр.: int num; num=1024; Можно инициализировать переменную в операторе описания: int cows = 72; int num=1024, hogs=45; Если присваивается символьное значение переменной типа char , то необходимо не забывать брать символ в апострофы: char isma=’S’; т.к. если записать char isma=S, компилятор будет считать, что используется переменная с именем S, которая не описана. В СИ имеется встроенная операция sizeof, которая позволяет определить размер объектов в байтах. Пример: main() { printf(“данные типа int занимают %d байта.\n”, sizeof(int)); printf(“данные типа char занимают %d байта.\n”, sizeof(char)); printf(“данные типа long занимают %d байта.\n”, sizeof(long)); } В результате будет выведена информация: данные типа int занимают 2 байта данные типа char занимают 1 байта данные типа long занимают 4 байта Символ %d указывает куда нужно вставить значение переменной. % — означает, что необходимо напечатать число, а d – что число необходимо печатать в десятичном формате.