Преобразование типов операндов бинарных операций
При выполнении операций могут встречаться операнды различных типов. Но для выполнения операции оба операнда должны быть преобразованы к общему типу в соответствии с небольшим набором правил.
Типы операндов преобразуются к общему типу в порядке увеличения их "допустимого диапазона значений". Поэтому неявные преобразования всегда идут от "меньших" объектов к "большим". Схема выполнения преобразований операндов арифметических операций:
short, char ® int ® unsigned ® long ® double
float ® double
При этом действуют следующие правила:
- значения типов char и short всегда преобразуются в int (даже если оба операнда имеют одинаковый тип);
- аналогично, значения типа float всегда преобразуются в double;
- после этого определяется "старший" из двух типов операндов, и другой операнд преобразуется к этому типу. Порядок "старшинства":
long double
double
unsigned long long
long long
unsigned long
long
unsigned int
int
Внимание: результатом 1/3 будет «0», чтобы избежать такого рода ошибок необходимо явно изменять тип хотя бы одного операнда, т.е. записывать, например: 1./3.
Типы char и int могут свободно смешиваться в арифметических выражениях, при этом каждая переменная типа char автоматически преобразуется в int. Это обеспечивает значительную гибкость при проведении определенных преобразований символов.
Дата добавления: 2015-09-18; просмотров: 639;