- •Лексические элементы языка
- •Соглашение об именах
- •Понятие типа данных
- •Определение переменных
- •Правило видимости (scope rules)
- •Классификация типов данных
- •Характеристики базовых типов данных
- •Константные величины
- •Числовые константы
- •Правила определения компилятором констант таковы:
- •Перечислимые константы
- •Символьные (литерные) константы
- •Строковые константы
- •Именованные (символические) константы
- •Преобразования типов Неявные преобразования.
- •Явные преобразования.
- •Примеры явного приведения типов:
- •Пример неявного преобразования типов
- •Процедура подготовки исполняемой программы
- •Пользовательских символических констант
- •Обращение к функциям
Именованные (символические) константы
Часто в программах встречаются константы, которым имеет смысл дать имя. Такие константы называются символическими.
Символические константы базовых типов определяются так же как и переменные соответствующих типов, но с указанием модификатора const.
Примеры оопределения символических констант:
const int x = 5;
const double z = 1E-5;
const float PI = 3.141593;
const char Smb = ‘t’;
Символические константы можно задавать (но не рекомендуется) средствами препроцессора.
Например: #define BT “Buenos tardes, amigos” // Определение символической строковой константы
#define PI 3.141593 // Определение символической числовой константы
Другой способ задания символических целочисленных констант – использование типа enum.
Например, в результате такого объявления
еnum { OK, NO_OPEN, NO_CREATE, FALL = 5 };
мы получим константы с указанными в списке именами и со значениями 0, 1, 2 и 5 соответственно.
Преобразования типов Неявные преобразования.
Операнды в выражениях можно смешивать. При этом выполняются неявные (по умолчанию) преобразования данных, а именно:
-
если один из операндов – вещественный, то другие преобразуются к вещественному типу;
-
если операнды имеют разный диапазон представления, то они преобразуются к большему диапазону;
-
если смешиваются типы char, short, unsigned char, unsigned short и enum ( в любых сочетаниях ) и если их значения могут быть представлены как int, то все они преобразуются в int; иначе – в unsigned int;
-
если операнды – целые и один из них имеет тип unsigned long, то остальные преобразуются к этому типу;
-
если один операнд имеет тип long int, а остальные – unsigned int и если long int может представить все значения unsigned int, то unsigned int преобразуется в long; иначе оба операнда преобразуются к типу unsigned long.
Неявные преобразования преследуют цель избежать потерь и искажения данных, однако программисту не следует полагаться на них целиком.
Явные преобразования.
Преобразования данных можно выполнять и явно, используя так называемое функциональное преобразование.
Постфиксная операция приведения типа:
type (выражение)
cлужит для формирования значений типа type на основе выражения, помещенного в круглых скобках.
Префиксная операция преобразования типа:
(type) выражение
Примеры явного приведения типов:
i = i + (int)3.14; // вначале 3.14 преобразуется к типу int
i = i + int(3.14);
int count=1066, total=1337;
double ratio;
ratio = double(count) / total; // здесь целое count преобразуется к типу double
Пример неявного преобразования типов
Пусть определены переменные следующих типов:
char ch;
int i;
float f;
double d;
long double r;
Тогда при вычислении выражения (см. ниже) произойдут следующие автоматические преобразования типов:
r = ch * 2 + (i – 0.5) + (f + d) - 7





char int int double float double int
int int double double double double





int double double
Далее дорисовать самостоятельно!
double double

double

double double
double
double double
double
long double
|
Стандартом С++ описываются 4 специальных оператора, предназначенные для приведения типов (преобразования выражения из одного типа в другой): static_cast < тип > ( выражение ) Преобразует выражение к указанному типу, без каких-либо проверок во время выполнения программы. В MSDN рекомендуется использовать этот оператор для приведения числовых типов - например, из enum или int в float Пример:
reinterpret_cast < тип > ( выражение ) Позволяет преобразовать выражение, являющееся указателем любого типа, к указанному типу (являющемуся также указателем любого типа, либо числовым типом - int, long). Чаще всего используется для приведения указателя на один тип к указателю на другой тип без необходимости промежуточного преобразования к void*. Пример:
|
