КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Автоматическое преобразование типов
Правила выполнения автоматических преобразований типов таковы, что обычно не приводят к потере информации. Дело в том, что при их использовании операнды с меньшим диапазоном значений преобразуются в операнды с большим диапазоном значений, как, например, преобразование целого числа в вещественное число в выражении 2 + 5.3. При выполнении автоматических преобразований типов все арифметические типы разделены на две категории: ● Короткие типы ● Длинные типы. В основу этой классификации положен размер памяти, которую занимают данные. К коротким типам относятся следующие типы: ▪ char, ▪ signed char, ▪ unsigned char, ▪ short, ▪ unsigned short. Для всех коротких типов при преобразованиях типов вначале выполняется операция, которая называется целочисленным повышением: все короткие типы преобразуются к типу int. Для этого правила имеется одно уточнение. Тип unsigned short преобразуется в тип int только в том случае, когда этот тип (int) достаточен для представления всего диапазона значений типа unsigned short (обычно это имеет место в тех системах, где для представления данных типа short отводится половина машинного слова и полное слово – для данных типа int). В последнем случае тип unsigned short преобразуется в unsigned int. Рассмотрим программный код, приведенный ниже: #include<stdio.h> int main(void) В вызове функции printf() вычисляется значение выражения n + ch и размер памяти, который занимает результат вычисления этого значения. При выполнении этой программы в среде Builder v. 6 на экране дисплея получен следующий результат: n + ch = 70 sizeof(n + ch)=4 Значение переменной ch, преобразованное к типу int, будет равно 65. Сложение этого числа со значением переменной n и дает в качестве результата вычисления выражения n + ch число 70. Завершающая часть вывода (sizeof(n + ch) = 4) может рассматриваться как доказательство того положения, что вычисления действительно выполнялись с операндами, преобразованными к типу int. При преобразовании длинных типов используется принцип ранжирования. С каждым из таких типов связывается его ранг. Ранжированная последовательность длинных типов, начиная с типа, имеющего наивысший ранг, имеет следующий вид: ● long double, ● double, ● float, ● unsigned long long, ● long long, ● unsigned long, ● long, ● unsigned, ● int. При использовании в выражении операндов, имеющих разные ранги, тип операнда, имеющий меньший ранг, приводится к типу операнда, имеющего больший ранг. Например, если в выражении один операнд имеет тип double, а второй – long, то тип второго операнда должен быть преобразован к типу double. Из этого правила существует одно исключение. Если один из операндов имеет тип long, а второй - unsigned, причем не все значения unsigned int могут быть представлены типом long, то оба операнда преобразуются к типу unsigned long.
Дата добавления: 2014-01-06; Просмотров: 572; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |