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

  • Логическое отрицание

  • Поразрядное отрицание

  • Операция умножения

  • Таблица

  • Операция деления

  • System.DivideByZeroException

  • Операция остатка от деления

  • Лекция 3. Лекция 3. Переменные, операции, выражения


    Скачать 103.61 Kb.
    НазваниеЛекция 3. Переменные, операции, выражения
    АнкорЛекция 3
    Дата12.02.2022
    Размер103.61 Kb.
    Формат файлаdocx
    Имя файлаЛекция 3.docx
    ТипЛекция
    #359276
    страница4 из 6
    1   2   3   4   5   6


    Операции отрицания



    Арифметическое отрицание (унарный минус –) меняет знак операнда на противоположный. Стандартная операция отрицания определена для типов int, long, float, double и decimal. К величинам других типов ее можно применять, если для них возможно неявное преобразование к этим типам.
    Логическое отрицание (!) определено для типа bool. Результат операции – значение false, если операнд равен true, и значение true, если операнд равен false.
    Поразрядное отрицание (), часто называемое побитовым, инвертирует каждый разряд в двоичном представлении операнда типа int,uint, long или ulong.

    Явное преобразование типа


    Операция используется для явного преобразования величины из одного типа в другой. Это требуется в том случае, когда неявного преобразования не существует. При преобразовании из более длинного типа в более короткий возможна потеря информации. Формат операции:
    (тип)выражение
    Здесь тип – это имя того типа, в который осуществляется преобразование, а выражение чаще всего представляет собой имя переменной, например:
    long b = 300;

    int a = (int) b; // данные не теряются

    byte d = (byte) a; // данные теряются


    Умножение, деление и остаток от деления



    Операция умножения (*) возвращает результат перемножения двух операндов. Стандартная операция умножения определена для типов int, uint, long, ulong, float,double и decimal. К величинам других типов ее можно применять, если для них возможно неявное преобразование к этим типам. Тип результата операции равен "наибольшему" из типов операндов, но не менее int.
    Все возможные значения для вещественных операндов приведены в таблице 3.2. Символами х и y обозначены конечные положительные значения, символом z – результат операции вещественного умножения. Если результат слишком велик для представления с помощью заданного типа, он принимается равным значению "бесконечность", если слишком мал, он принимается за 0. NaN (not a number) означает, что результат не является числом.

    Таблица 3.2. Результаты вещественного умножения

    *

    +y

    -y

    +0

    -0

    +∞

    -∞

    NaN

    +x

    +z

    -z

    +0

    -0

    +∞

    -∞

    NaN

    -x

    -z

    +z

    -0

    +0

    -∞

    +∞

    NaN

    +0

    +0

    -0

    +0

    -0

    NaN

    NaN

    NaN

    -0

    -0

    +0

    -0

    +0

    NaN

    NaN

    NaN

    +∞

    +∞

    -∞

    NaN

    NaN

    +∞

    -∞

    NaN

    -∞

    -∞

    +∞

    NaN

    NaN

    -∞

    +∞

    NaN

    NaN

    NaN

    NaN

    NaN

    NaN

    NaN

    NaN

    NaN


    Операция деления (/) вычисляет частное от деления первого операнда на второй. Стандартная операция деления определена для типов int, uint, long, ulong, float, double и decimal. К величинам других типов её можно применять, если для них существует неявное преобразование к этим типам. Тип результата определяется правилами преобразования, но не меньше int.
    Если оба операнда целочисленные, результат операции округляется вниз до ближайшего целого числа. Если делитель равен нулю, генерируется исключение System.DivideByZeroException.

    Если хотя бы один из операндов вещественный, дробная часть результата деления не отбрасывается, а все возможные значения приведены в таблице3.3.

    Таблица 3.3. Результаты вещественного деления

    /

    +y

    -y

    +0

    -0

    +∞

    -∞

    NaN

    +x

    +z

    -z

    +∞

    -∞

    +0

    -0

    NaN

    -x

    -z

    +z

    -∞

    +∞

    -0

    +0

    NaN

    +0

    +0

    -0

    NaN

    NaN

    +0

    -0

    NaN

    -0

    -0

    +0

    NaN

    NaN

    -0

    +0

    NaN

    +∞

    +∞

    -∞

    +∞

    -∞

    NaN

    NaN

    NaN

    -∞

    -∞

    +∞

    -∞

    +∞

    NaN

    NaN

    NaN

    NaN

    NaN

    NaN

    NaN

    NaN

    NaN

    NaN

    NaN


    Для финансовых величин (тип decimal) при делении на 0 и переполнении генерируются соответствующие исключения, при исчезновении порядка результат равен 0.
    Операция остатка от деления (%) также интерпретируется по-разному для целых, вещественных и финансовых величин. Если оба операнда целочисленные, результат операции вычисляется по формуле x - (x / y) * y. Если делитель равен нулю, генерируется исключение System.DivideByZeroException.

    Если хотя бы один из операндов вещественный, результат операции вычисляется по формуле x – n * y, где n – наибольшее целое, меньшее или равное результату деления х на y. Все возможные комбинации значений операндов приведены в таблице3.4.


    Таблица 3.4. Результаты вещественного остатка от деления

    %

    +y

    -y

    +0

    -0

    +∞

    -∞

    NaN

    +x

    +z

    z

    NaN

    NaN

    x

    x

    NaN

    -x

    -z

    -z

    NaN

    NaN

    -x

    -x

    NaN

    +0

    +0

    +0

    NaN

    NaN

    +0

    +0

    NaN

    -0

    -0

    -0

    NaN

    NaN

    -0

    -0

    NaN

    +∞

    NaN

    NaN

    NaN

    NaN

    NaN

    NaN

    NaN

    -∞

    NaN

    NaN

    NaN

    NaN

    NaN

    NaN

    NaN

    NaN

    NaN

    NaN

    NaN

    NaN

    NaN

    NaN

    NaN


    Для финансовых величин (тип decimal) при получении остатка от деления на 0 и при переполнении генерируются соответствующие исключения, при исчезновении порядка результат равен 0. Знак результата равен знаку первого операнда.

    1   2   3   4   5   6


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