- •Основные типы данных
- •Переменные и константы целого типа
- •Переменные типа int
- •Классы памяти и инициализация переменных
- •Переменные типа long
- •Константы целого типа
- •Переменные типа short
- •Переменные типа char
- •Константы типа char
- •Строки, или строковая константа, или литерал
- •Переменные вещественного типа
- •Константы вещественного типа
- •Именованные константы
- •Преобразование типов Преобразования при вычислении выражений
- •Преобразование типов при выполнении операций присваивания
- •Преобразования при приведении типов
Классы памяти и инициализация переменных
Все переменные должны быть определены до первого их использования.
Если переменные определены вне главной функции, то эти переменные имеют класс памяти extern (внешний). Эти переменные являются глобальными, будут доступны во всех функциях, время их существования статическое (до конца выполнения программы).
Переменные с модификатором static имеют класс памяти статический. Эти переменные являются статическими, будут доступны только в функции, где они определены, но время их существования статическое (до конца выполнения программы).
Если переменные определены внутри главной (или другой) функции, то эти переменные будут иметь автоматический класс памяти. Эти переменные будут доступны только в функции, блоке, где они определены, время их существования автоматическое (до конца выполнения цикла, блока, функции).
Присвоение численного значения при определении переменной называется инициализацией. Инициализация бывает неявная, т.е. по умолчанию, и явная.
Внешние и статические переменные по умолчанию инициализируются нулями, т.е. при выделении памяти в ячейки заносятся нули.
Если переменные определены внутри функции, то у них класс памяти автоматический и в ячейках памяти могут быть произвольные значения.
Явное присвоение численного значения при определении переменной называется явной инициализацией. Такая инициализация записывается так: int a1=5; int a2(5);
Переменные типа long
Переменные целого типа двойной точности вводятся с помощью служебного слова long , что эквивалентно записи long int . Переменная типа long занимает в памяти байта или 32 бита. Старший бит знаковый.
Переменная типа long может принимать значения от –231 до 231–1 (от –2147483648 до 2 147 483 647).
С помощью служебного слова unsigned вводится беззнаковый целый тип двойной точности: unsigned long . Переменная типа unsigned long может принимать значения от 0 до 232–1 (от 0 до 4 294 967 295).
Примеры определения переменных типа long :
long y1,у2; long int с; signed long int а;
unsigned long z; unsigned long int g;
Если к максимальному числу типа long прибавить 1 , то получим минимальное число, а если от минимального числа отнять 1 , то получим максимальное число.
Например: long d;d=2147483647; d+=1; // d=–2147483648
unsigned long k; k=0; k-=1; // k=4294967295
Вводятся и выводятся данные типа int с помощью спецификаторов %ld (в десятичном виде), %lo (в восьмеричном виде), %lx (в 16-ричном виде), %lu (беззнаковые). Например:
scanf(“%ld %lu”, &d,&k);
printf(“d=%ld k=%ld \n”,d,k);
Константы целого типа
Константы целого типа – фиксированное изображение целых численных значений.
Целые константы могут быть десятичные, восьмеричные и шестнадцатеричные.
Десятичная целая константа – это константа, представленная десятичными цифрами, начинающаяся не с нуля.
int a1=10;
Восьмеричная константа всегда начинается с нуля, далее используют цифры от 0 до 7.
int a2=010; // a2=8
Шестнадцатеричные константы начинаются со значка 0х или 0Х, далее следуют шестнадцатеричные цифры 0, …9, а, b, с, d, e, f (большие или малые).
int a3=0x10; // a3=16
Целые константы всегда положительные, поэтому, например, чтобы инициализировать переменную отрицательным значением, необходимо к константе присвоить унарный минус:
int a4=–15;
Целым константам по умолчанию всегда присваивается тип int .
Для задания константы с двойной точностью, справа от константы записывается символ l ( L ),
для задания беззнаковой константы типа int или long дописывается символ u . Допустимо такое использование констант:
unsigned c1=40000u; long b=20L;
unsigned long g=13Lu; unsigned long a=10ul;