Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
В операциях могут участвовать операнды различных типов, в этом случае они преобразуются к общему типу в порядке увеличения их "размера памяти", т.е. объема памяти, необходимого для хранения их значений. Поэтому неявные преобразования всегда идут от "меньших" объектов к "большим". Схема выполнения преобразований операндов арифметических операций:
short, char → int → unsigned → long → double
float → double
Стрелки отмечают преобразования даже однотипных операндов перед выполнением операции, т.е. действуют следующие правила:
- значения типов char и shor t всегда преобразуются в int;
- если любой из операндов (a или b) имеет тип double, то второй преобразуется в double;
- если один из операндов long, то другой преобразуется в long.
Результатом 1/3 будет «0», чтобы избежать такого рода ошибок необходимо явно изменять тип хотя бы одного операнда, т.е. записывать, например: 1. / 3.
Типы char и int могут свободно смешиваться в арифметических выражениях. Каждая переменная типа char автоматически преобразуется в int, что обеспечивает значительную гибкость при проведении определенных преобразований символов.
При присваивании значение правой части преобразуется к типу левой, который и является типом результата. И здесь необходимо быть внимательным, т.к. при некорректном использовании операций присваивания могут возникнуть неконтролируемые ошибки. Так, при преобразовании int в char старший байт просто отбрасывается.
Пусть имеются значения:
float x; int i;
тогда
x=i; и i=x;
приводят к преобразованиям, причем float преобразуется в int с отбрасыванием дробной части. Тип double преобразуется во float округлением. Длинное целое преобразуется в более короткое целое и char посредством отбрасывания лишних бит более высокого порядка.
При передаче данных функциям также происходит преобразование типов: в частности, char становится int, а float - double.
Дата публикования: 2014-11-28; Прочитано: 746 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!