Типы данных в языке C++______________________________671

Если вы попробуете реализовать этот пример, то увидите, что переменная с по-
лучит значение -5536, вместо ожидаемого 60 000. Дело в том, что переменная типа
short может хранить значение не больше, чем 32 767. Поскольку выражение в пра-
вой части приведенного оператора дает результат 60 000, то его присваивание пе-
ременной типа short дает совершенно неверное значение.

Как было видно из некоторых приведенных примеров, неявное автоматиче-
ское приведение типов не всегда дает желаемый результат. Это можно исправить,
применив операцию явного приведение типов. Оно записывается в виде

(тип)

перед той величиной, которую вы хотите привести к указанному типу. Вернемся к
уже рассмотренному примеру

int тп = 1, n = 2;

double A = m / n;

который давал неверное значение переменной А. Этот результат можно исправить,
применив во втором операторе явное приведение типа:

double A = (double)m / n;

В этом случае переменная m, к которой применяется операция приведения
типа, рассматривается как действительная величина типа double. Тогда и перемен-
ная n неявно приводится к типу double, так что деление осуществляется уже не с
целыми, а с действительными числами. Результат получается правильным — 0.5.

12.3 Арифметические типы данных

Арифметические типы данных — это целые и действительные типы.
К целым типам относятся char, short, int и long вмести с их вариантами sig-
ned — со знаком и unsigned — без знака. Из этих ключевых слов может формиро-
ваться множество целых типов данных. Многие из них являются синонимами друг
друга, как следует из следующей таблицы.

Синонимы	Примечания
char, signed char	Синонимы, если умолчанием для char задано signed
unsigned char	
char, unsigned char	Синонимы, если умолчанием для char задано unsigned
signed char :	
int, signed int	
unsigned, unsigned int	
short, short int, signed short int	
unsigned short, unsigned short int	
long, long int, signed long int	
unsigned long, unsigned long int	

Спецификаторы signed и unsigned могут применяться только к char, short,
int, long. Если тип обозначен просто как signed или unsigned, то подразумеваются
соответственно signed int и unsigned int.