- •Основные типы данных
- •Переменные и константы целого типа
- •Переменные типа int
- •Классы памяти и инициализация переменных
- •Переменные типа long
- •Константы целого типа
- •Переменные типа short
- •Переменные типа char
- •Константы типа char
- •Строки, или строковая константа, или литерал
- •Переменные вещественного типа
- •Константы вещественного типа
- •Именованные константы
- •Преобразование типов Преобразования при вычислении выражений
- •Преобразование типов при выполнении операций присваивания
- •Преобразования при приведении типов
Именованные константы
Константы – это фиксированное числовое или символьное значение. Но в языке С++ имеется несколько возможностей задавать константы с помощью имен, именованные константы.
1. – использование квалификатора типа const :
const тип имя_константы = значение_константы;
Например: const a=100; const char ADC=’c’; const double R=2.718281828;
Если тип константы не задан, то компилятор определяет его по внешнему виду значения.
При определении с помощью слова const под имя_константы память выделяется, и значение_константы изменить нельзя.
2. – использование директиву препроцессора #define :
#define имя_константы значение_константы
На этапе работы препроцессора все включенные имена_константы будут изменены на значение_константы.
Например: #define R 5634
#define PI 3.1415
При использовании директивы #define замена осуществляется на этапе работы препроцессора, память под имя_константы не выделяется, значение_константы можно переопределить, используя повторную директиву #define . При этом директивой #undef при этом можно не пользоваться:
#define a 5 #define b 7
или #undef b
#define a 6 #define b 8
3. Целые константы можно также вводить с помощью :
enum имя_перечисления {имя_константы=значение, имя_константа=значение,…};
где – ключевое слово;
– произвольный идентификатор, необязателен и имеет права типа;
– идентификатор, которому можно присвоить некоторое значение.
Если значение отсутствует, то первому элементу по умолчанию присваивается значение 0, не первому элементу присваивается значение на 1 больше, чем предыдущему.
Например:
enum {a, b=3, g}; // Получим a=0, b=3, g=4.
int ch=g; // Получим ch=4
enum name {Petrov=19, Sidorov, Ivanov};
name age=Sidorov; // age=20
Имена констант должны быть уникальными, но их значения могут повторяться.
Например:
enum {zero,nought=0,one,two,paiz=2,tree};
Получим zero=0, nought=0, one=1, two=2, paiz=2, tree=3.
Преобразование типов Преобразования при вычислении выражений
При выполнении операций производится автоматическое преобразование типов, чтобы привести операнды выражений к общему типу. Однако можно отметить, что при вычислении выражений операнды преобразуются к типу того операнда, который имеет наибольший размер.
Рассмотрим общие арифметические преобразования. Эти правила используются по порядку.
В арифметических выражениях операнды типа char , unsigned char , short , unsigned short преобразуются к типу int или к unsigned int .
Иначе если один операнд имеет тип long double, то второй преобразуется к long double.
Иначе если один операнд double, то второй также преобразуется к типу double.
Иначе если один операнд float, то второй также преобразуется к типу float.
Иначе если один операнд типа unsigned long, то второй преобразуется к типу unsigned long.
Иначе если один операнд типа long, а второй unsigned int, то, если все значения unsigned int может представить тип long, то он преобразуется к типу long, иначе оба преобразуются в тип unsigned long.
Иначе если один операнд типа long, то второй преобразуется к типу long.
Иначе если один операнд типа unsigned int, то второй операнд преобразуется к типу unsigned int.
Иначе оба операнда типа int.
Пример:
double sd; float ft=2.0f;
char c1=’(‘, c2=’)’, c3; // 40 41,c1 и c2 преобразуется к типу int (87).
unsigned long k=2L;
int i=73;
c3=c1+c2+6; //87==’W’, c1 и c2 преобразуется к типу int (87).
sd=ft*(i-c3/k);
В выражении c3/k преобразуется к типу unsigned long (43). Затем операнд i в выражении (i+c3/k) преобразуется к типу unsigned long (20), а все выражение преобразуется к типу float (40.0). Результат всего выражения будет иметь тип double.