Типы данных и их объявление
Важное отличие языка СИ от других языков является отсутствие принципа умолчания, что приводит к необходимости объявления всех переменных, используемых в программе явно вместе с указанием соответствующих им типов.
Формат объявления переменных имеет следующий вид:
[<storage modifier>]<type><identifier>
<storage modifier> - Спецификатор класса памяти - определяется одним из четырех ключевых слов языка СИ: auto, extern, register, static, и указывает,каким образом будет распределяться память под объявляемую переменную, с одной стороны, а с другой, область видимости этой переменной, т.е., из каких частей программы можно к ней обратиться. Не объязательный элемент и он нужен только в некоторых случаях.
<extern> - если переменная может использоваться в других файлах исходного кода программы;
<static> - если переменная локальная, то объявлена в какой либо функции после скобки и должна сохранять свои значения до следующего вызова этой функции;
<register> - разместить переменную в регистрах МК.
Глобальные переменные объявляются до появления их в тексте какой ни будь функции. После объявления глобальные переменные доступны в любой функции программы.
Локальные переменные объявляются в самом начале функций- т.е. после фигурной скобки.
<type definition>- спецификатор типа данных, которых может хранить переменная.
Для определения данных целого типа используются различные ключевые слова, которые определяют диапазон значений и размер области памяти, выделяемой под переменные.
Целые типы : Плавающие типы: char float int double short long double long signed unsigned |
Например,
Unsigned char - хранит число от 0 до 255(байт);
Unsigned Int - хранит число от 0 до 65535 (два байта);
Unsigned long Int- хранит число от 0 до 4294967295 (четыре байта).
Вместо Unsigned char можно писать просто char, так как компилятор по умолчанию считает char , беззнаковым.
Signed char - означает знаковую переменную и хранит число от -128 до 127.
Ключевые слова signed и unsigned указывают как интерпретируется нулевой бит объявляемой переменной, т.е., если указано ключевое слово unsigned (беззнаковый), то нулевой бит интерпретируется как часть числа, в противном случае нулевой бит интерпретируется как знаковый. В случае отсутствия ключевого слова unsigned целая переменная считается знаковой. В том случае, если спецификатор типа состоит из ключевого типа signed или unsigned и далее следует идентификатор переменной, то она будет рассматриваться как переменная типа int. Например:
unsigned int n;unsigned int b;int c; (подразумевается signed int c );unsigned d; (подразумевается unsigned int d );signed f; (подразумевается signed int f ). |
Переменная любого типа может быть объявлена как немодифицируемая. Это достигается добавлением ключевого слова const к спецификатору-типа. Объекты с типом const представляют собой данные используемые только для чтения, т.е. этой переменной не может быть присвоено новое значение. Отметим, что если после слова const отсутствует спецификатор-типа, то подразумевается спецификатор типа int. Если ключевое слово const стоит перед объявлением составных типов (массив, структура, смесь, перечисление), то это приводит к тому, что каждый элемент также должен являться немодифицируемым, т.е. значение ему может быть присвоено только один раз.
Примеры:
const double A=2.128E-2;const B=286; (подразумевается const int B=286) consnant char_ string constant []=”this is a string constant” |
Дата добавления: 2016-12-27; просмотров: 1786;