Часто перед выполнением операции требуется вычислить значения операндов. Например, в выражении F(i) + G(i++) * H(i) сначала вызываются функции F, 6 и Н, а затем выполняются умножение и сложение. Операнды всегда вычисляются слева направо независимо от приоритетов операций, в которых они участвуют. Кстати, в приведенном примере метод Н вызывается с новым значением 1 (увеличенным на 1).
Тип результата выражения в общем случае формируется по правилам, которые описаны в следующем разделе.
Преобразования встроенных арифметических типов-значений
При вычислении выражений может возникнуть необходимость в преобразовании типов. Если операнды, входящие в выражение, одного типа и операция для этого типа определена, то результат выражения будет иметь тот же тип.
Если операнды разного типа и/или операция для этого типа не определена, перед вычислениями автоматически выполняется преобразование типа по правилам, обеспечивающим приведение более коротких типов к более длинным для сохранения значимости и точности. Автоматическое {неявное) преобразование возможно не всегда, а только если при этом не может случиться потеря значимости.
Если неявного преобразования из одного типа в другой не существует, программист может задать явное преобразование типа с помощью операции (тип)х. Его результат остается на совести программиста. Явное преобразование рассматривается в этой главе немного позже.