Информатика и технология программирования


Преобразование типов операндов - часть 2


В таких случаях транслятор "запоминает", что форма представления целого изменилась:


int n=-1;
unsigned d; d = n; // Значение d=0xFFFF (-1)

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

Преобразования типов данных операндов происходят в программе в трех случаях:



-при выполнении операции присваивания, когда значение переменной или выражения из правой части запоминается в переменной в левой части (см. Операция присваивания);



-при прямом указании на необходимость изменения типа данных переменной или выражения, для чего используется операция явного преобразования типа (см. Операция явного преобразования типа);



-при выполнении бинарных операций над операндами различных типов, когда более " длинный" операнд превалирует над более " коротким" , вещественное -над целым, а беззнаковое над знаковым.

Соответствующие неявные преобразования выполняются в такой последовательности.

.


1. . char,short,enum,битовое поле,unsigned char,
unsigned short -&#62 int
float -&#62 double
2. long double + x -&#62 long double+long double
double + x -&#62 double + double
long + x -&#62 long + long
unsigned + x -&#62 unsigned + unsigned
3. int + int -&#62 int + int

Таким образом, короткие типы данных (знаковые и беззнаковые) удлиняются до int и double , а выполнение любой бинарной операции с одним long double, double, long, unsigned ведет к преобразованию другого операнда к тому же типу. Это может сопровождаться перечисленными выше действиями: увеличение разрядности операнда путем его "удлинения", преобразование в форму с плавающей точкой и изменение беззнаковой формы представления на знаковую и наоборот.

Следует обратить внимание на одну тонкость: если в процессе преобразования требуется увеличение разрядности переменной, то на способ ее "удлинения" влияет только наличие или отсутствие знака у самой переменной.


Начало  Назад  Вперед



Книжный магазин