Шпаргалка начинающего программиста AVR МК.
Переменные и константы в языке Си
Целые, вещественные и символьные переменные: минимальные и максимальные значения, а также занимаемый ими объём памяти
Константа – это величина (число или символ), которая при выполнении программы всегда остаётся неизменной, т. е.
не может изменяться во время выполнения программы.
В зависимости от значения константы, компилятор самостоятельно присваивает ей тот или иной тип (char, int и т. д.).
Переменная – это область памяти для временного хранения данных. Предполагается, что в процессе
выполнения программы значения переменных могут изменяться.
Любая переменная до её использования в программе на языке Си должна быть объявлена (т.е. дано её описание). Вначале указывается
тип переменной, а затем её имя.
Имя переменной в языке Си может начинаться с подчерка или буквы, но не с числа. Переменная может включать в себя символы
английского алфавита, цифры и знак подчёркивания. Также имя переменной не должно совпадать с ключевыми словами (т. е. специальными словами,
которые используются в качестве управляющих функций в языке Си).
Типы данных можно разделить условно на три группы:
1. целые – данные целого типа,
2. вещественные – данные, которые могут иметь дробную часть,
3. символы – данные типа char, которые представляют собой какой-то символ и занимают в памяти всего один байт.
Также char можно считать целым типом малой величины, так как зачастую его используют в этом качестве, когда хотят оперировать
малыми значениями, чтобы сэкономить память.
Теперь давайте определим минимальное и максимальное значение числа, которое может хранить переменная каждого из типов, а также объём, который
оно занимает в памяти микропроцессора.
Тип | Размер в байтах (битах) | Интервал изменения |
unsigned char | 1 (8) | от 0 до 255 |
signed char (char) | 1 (8) | от -128 до 127
|
unsigned short | 2 (16) | от 0 до 65 535 |
signed short (short) | 2 (16) | от -32 768
до 32 767 |
unsigned int (unsigned) | 4 (32) |
от 0 до 4 294 967 296 |
signed int (int) | 4 (32) |
от -2 147 483 648 до 2 147 483 648 |
unsigned long | 4 (32) | от 0 до 4 294 967 295
|
signed long (long) | 4 (32) |
от -2 147 483 648 до 2 147 483 647 |
unsigned long long | 8 (64) | от 0 до
18 446 744 073 709 551 615
|
signed long long (long long) | 4 (32) |
от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 |
float | 4 (32) | от 3.4Е-38 до 3.4Е+38 |
double | 8 (64) | от 1.7Е-308 до 1.7Е+308 |
long double | 10 (80) | от 3.4Е-4932 до 3.4Е+4932 |
Приведём примеры объявления и определения переменных. В Си это осуществляется в следующей форме:
int i, n; // i и n объявлены как переменные целого числа типа int
Далее этим числам можно присвоить определённые значения:
i = 0 ; n = 154;
Точно также это выглядит и для символьных переменных:
char sym1, sym2 ; // sym1 и sym2 объявлены как переменные типа char
sym1 = 'c' ; sym2 = 'f' ; // и им присвоены символьные значения c и f
Начальное значение может быть присвоено переменной и сразу в момент её объявления в форме: тип_переменной имя_переменной = значение;
Для приведённых выше примеров это будет выглядеть следующим образом:
int i = 0 , n = 154 ;
char sym1 = 'c' , sym2 = 'f' ;
Работая с вещественными переменными (float, double, long double), при присвоении им значений обязательно присутствие десятичной точки
либо экспоненциальной формы в записи, а для "float" ещё и суффикса f. Например:
float f1 = 120.f ; // f1 =120 – переменная типа float
double f2 = 30.0 ; либо double f2 = 3e+1 ; // f2 =30 - переменная типа double
|