6 Совместимость и преобразование типов данных

6 Совместимость и преобразование типов данных
+Основные понятия совместимости типов
Различают следующие понятия при сравнении различных типов данных:
тождественность типов данных двух переменных означает, что две переменные используют один идентификатор типа данных;
совместимостьдвух типов данных означает, что вместо переменной одного типа данных можно использовать переменную второго типа данных без потери информации;
совместимость по присваиванию (A=B) двух типов данных (typeА A и typeB B) означает, что при операции присваивания переменной A можно передать значение переменной B без потери или искажения данных.
-Определение нового имени типа с помощью typedef
Имеется возможность выполнить описание нового имени для существующего типа с использованием префикса typedef, которое при этом не приводит к созданию нового типа. Формат описания нового имени типа:
typedefимя_типановое_имя_типа;
Пример:
typedefintlength;
Это описание делает имя length синонимом стандартного типа int. «Тип» length может быть использован в описаниях, преобразованиях типов и т.д. аналогично применению типа int. Примеры:
lengthlen, maxlen; // Объявление переменных типа int
length *lengths[]; // Формирование указателя на вектор
Пример описания нового имени string:
typedef *charstring;
Это делает string синонимом для *char, то есть для указателя на символы, что затем можно использовать в описаниях вида
string p, lineptr[lines], alloc();
+Преобразование типов данных в языке С++
Для придания программе гибкости и универсальности используется преобразование одного типа данных в другой. В языках С и С++ это можно выполнить тремя способами:
с помощью операций неявного преобразования типов в выражениях;
с помощью явного приведения типа;
с помощью переменных, хранящих данные в одной области памяти (например, объединений или указателей).
Неявные преобразования используются, если в выражениях встречаются операнды различных типов, которые автоматически преобразуются к общему типу в соответствии с определенными правилами. Производятся только преобразования, имеющие смысл, такие как, например, преобразование целого в действительное в выражениях с арифметическими операциями. Правила неявного преобразования:
1) типы char и int могут свободно смешиваться в арифметических выражениях: переменная типа char автоматически преобразуется в int;
2) выражения отношения и логические выражения, связанные операциями && и ||, по определению имеют значение 1, если они истинны, и 0, если они ложны;
3) к арифметической операции применяется следующая последовательность правил преобразования:
4) все переменные типа float в выражениях преобразуются в double
· вся вещественная арифметика выполняется с двойной точностью.
Преобразования автоматически выполняются при присваиваниях: значение правой части преобразуется к типу левой, который и является типом результата. Символьные переменные преобразуются в целые либо со знаковым расширением, либо без него. При обратном преобразовании типа int в char лишние биты высокого порядка отбрасываются.
Если тип float присваивается типу int, то преобразование float в int выполняется отбрасыванием дробной части. Тип double преобразуется во float округлением. Длинные целые преобразуются в более короткие целые и в переменные типа char посредством отбрасывания лишних битов высокого порядка.


Приложенные файлы

  • doc 11137536
    Размер файла: 37 kB Загрузок: 1

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