Главная страница
Навигация по странице:

  • Option strict → Off

  • Basic

  • Double

  • Single

  • Лекции. Основные понятия и определения


    Скачать 1.94 Mb.
    НазваниеОсновные понятия и определения
    Дата27.03.2018
    Размер1.94 Mb.
    Формат файлаdocx
    Имя файлаЛекции.docx
    ТипКонтрольные вопросы
    #39570
    страница30 из 58
    1   ...   26   27   28   29   30   31   32   33   ...   58

    10.10. Пользовательские типы данных


    В языке C и предыдущих версиях языка Basic для определения таких типов данных как: матрицы, строки, точки и т.п. использовались инструкции typedef и Type соответственно. Сейчас для этих целей в изучаемых языках применяют понятия структуры и класса. Поэтому в данном курсе эти инструкции не расматриваются. Структуры изложены ранее. Основополагающее понятие класса будет введено при изучении последующих дисциплин.

    10.11. Преобразование типов


    Различают автоматические преобразования, которые выполняются транслятором в случае вхождения в состав выражения объектов разных типов, и явные преобразования, задаваемые указанием программиста.

    10.10.1. Автоматические преобразования


    Большинство автоматических преобразований касаются числовых типов данных. Их принцип: преобразование выполняется от частного к более общему типу, т.е. от целых к данным с плавающей точкой. Если в выражении данные одного типа, но различной длины, то результат получает размер наиболее длинного из операндов.

    Для языка C это можно выразить следующими цепочками:

    char→short→int→long→double float→double

    Для языка Basic:

    Byte→Short→Integer→Long→Double Single→Double

    Это позволяет не терять точности представления данных при преобразовании.

    В языке Basic допустимо преобразование из числа в строку и обратно. Для успешного преобразования из строки в число необходимо, чтобы содержание строки могло быть интерпретировано как число в любой форме представления. Число в строку преобразуется всегда успешно. Для реализации автоматических (неявных) преобразований в среде разработки должна быть установлен режим Option strict → Off. Для VB 2008 он устанавливается в пункте меню Project → <имя проекта> Properties → Compile → Option strict. Для русифицированной версии VB 2010 – Проект → Свойства: <имя проекта> → Компиляция → Проверка сужающих преобразований.

    Особый случай представляет собой преобразование данных при присваивании. Его можно отнести к группе явных преобразований.

    10.10.2. Явные преобразования


    В языке C они выполняются конструкцией вида:

    (<имя-типа>)<выражение>

    Пример.

    sqrt((double)n)

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

    В языке Basic явные преобразования выполняются с помощью группы встроенных функций.

    CBool(<выражение>) → Boolean

    CByte(<выражение>) → Byte

    CСhar(<выражение>) → Char

    CDate(<выражение>) → Date

    CDbl(<выражение>) → Double

    CDec(<выражение>) → Decimal

    CInt(<выражение>) → Integer

    CLng(<выражение>) → Long

    CSbyte(<выражение>) → SByte

    CShort(<выражение>) → Short

    CSng(<выражение>) → Single

    CStr(<выражение>) → String

    CUInt(<выражение>) → UInteger

    CULng(<выражение>) → ULong

    CUShort(<выражение>) → UShort

    Необходимо отметить особенности некоторых видов явных преобразований. Преобразование вида float | double → int в языке C приводит к отбрасыванию дробной части.

    Пример.

    int k, m;

    float s;

    s=3.78;

    k=s; → k=3

    m=-s; → s=-3

    В языке Basic аналогичное преобразование вызывает округление.

    Пример.

    dim k as integer, m as integer, s as single

    s=3.78

    k=s → k=4

    k=s-0.5 → k=3

    Преобразование вида int unsigned в языке C для отрицательных чисел приводит к следующему эффекту.

    Пример.

    int k;

    unsigned m;

    k=-1;

    m=k; → m=65535

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

    Пример.

    Dim k As Long, s As Single, m As Short

    k=123456789

    s=k → s=1.234568e+8

    m=k → Ошибка!


    1   ...   26   27   28   29   30   31   32   33   ...   58


    написать администратору сайта