1.3.2. Преобразования при вычислении выражений

Содержание
Возврат к предыдущей части 1.3.1 Преобразования при вычислении выражений

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

Рассмотрим общие арифметические преобразования.

  • 1. Операнды типа float преобразуются к типу double.
  • 2. Если один операнд long double, то второй преобразуется к этому же типу.
  • 3. Если один операнд double, то второй также преобразуется к типу double.
  • 4. Любые операнды типа char и short преобразуются к типу int.
  • 5. Любые операнды unsigned char или unsigned short преобразуются к типу unsigned int.
  • 6. Если один операнд типа unsigned long, то второй преобразуется к типу unsigned long.
  • 7. Если один операнд типа long, то второй преобразуется к типу long.
  • 8. Если один операнд типа unsigned int, то второй операнд преобразуется к этому же типу.

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

Пример:

1
2
3
4
5
6
        double         ft,sd;
        unsigned char  ch;
        unsigned long  in;
        int            i;
        ....
           sd=ft*(i+ch/in);

При выполнении оператора присваивания правила преобразования будут использоваться следующим образом. Операнд ch преобразуется к unsigned int (правило 5). Затем он преобразуется к типу unsigned long (правило 6). По этому же правилу i преобразуется к unsigned long и результат операции, заключенной в круглые скобки будет иметь тип unsigned long. Затем он преобразуется к типу double (правило 3) и результат всего выражения будет иметь тип double.

Читать далее. Раздел 1.3.3. Операции отрицания и дополнения
Содержание

Добавить комментарий

Ваш e-mail не будет опубликован.

Перед отправкой формы:
Human test by Not Captcha