Бинарных операций

При выполнении операций могут встречаться операнды различных типов. Но для выполнения операции оба операнда должны быть преобразованы к общему типу в соответствии с небольшим набором правил.

Типы операндов преобразуются к общему типу в порядке увеличения их "допустимого диапазона значений". Поэтому неявные преобразования всегда идут от "меньших" объектов к "большим". Схема выполнения преобразований операндов арифметических операций:

 

short, char ® int ® unsigned ® long ® double

float ® double

При этом действуют следующие правила:

- значения типов char и short всегда преобразуются в int (даже если оба операнда имеют одинаковый тип);

- аналогично, значения типа float всегда преобразуются в double;

- после этого определяется "старший" из двух типов операндов, и другой операнд преобразуется к этому типу. Порядок "старшинства":

 

long double

double

long long

unsigned long

long

unsigned int

int

 

Внимание: результатом 1/3 будет «0», чтобы избежать такого рода ошибок необходимо явно изменять тип хотя бы одного операнда, т.е. записывать, например: 1. / 3.

Типы char и int могут свободно смешиваться в арифметических выражениях, при этом каждая переменная типа char автоматически преобразуется в int. Это обеспечивает значительную гибкость при проведении определенных преобразований символов.