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

  • Результаты логических операций

  • Таблица приоритетов рассмотренных выше операций

  • Лекции Булатицкий Дмитрий Иванович (во многом по материалам Прасолова А. Н.)


    Скачать 319.62 Kb.
    НазваниеЛекции Булатицкий Дмитрий Иванович (во многом по материалам Прасолова А. Н.)
    Дата11.01.2022
    Размер319.62 Kb.
    Формат файлаdocx
    Имя файлаLecture_Programming_2021_09_01.docx
    ТипЛекции
    #328427
    страница10 из 36
    1   ...   6   7   8   9   10   11   12   13   ...   36

    Логические операции


    Логические операции служат для построения сложных условий, подобных приведенному в предыдущем параграфе. В языке Си определены следующие логические операции:

    ! логическое отрицание (одноместная),

    && логическое "и" (двуместная),

    || логическое "или" (двуместная).

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

    Результаты логических операций

    op1

    op2

    !op1

    op1 && op2

    op1 || op2

    0

    0

    не 0 (1)

    0

    0

    0

    не 0 (1)

    не 0 (1)

    0

    не 0 (1)

    не 0 (1)

    0

    0

    0

    не 0 (1)

    не 0 (1)

    не 0 (1)

    0

    не 0 (1)

    не 0 (1)

    Логические операции выполняются слева направо, причем для двуместных операций второй операнд может не вычисляться, если значение первого операнда однозначно определяет значение операции. Это происходит в том случае, если первый операнд для && равен 0 (результат операции тоже 0) и если первый операнд для || не 0 (результат операции тоже не 0).
      1. Дополнительные операции присваивания


    Очень часто в программах присутствуют операторы вида
    a = a + b;

    a = a - b;

    a = a * b;

    a = a / b;
    Они изменяют значения некоторых переменных. В языке Cи для сокращения программ и повышения их эффективности используются дополнительные операторы присваивания:
    a += b;

    a -= b;

    a *= b;

    a /= b;

    a %= b;
    Дополнительные операции присваивания должны быть записаны слитно, без пробелов. Действие операции - изменение значения переменной, стоящей слева от знака операции. Результат - значение измененной переменной.

    Дополнительные операции присваивания имеют самый низкий приоритет и выполняются справа налево.

    Использование операций ++, --, +=, , , /=, %= вместо обычных не является обязательным, но их применение считается хорошим стилем программирования на языке Cи.
      1. Операция определения размера данных


    В некоторых случаях совершенно необходимо иметь возможность определять размеры данных, создаваемых пользователем. Это позволяет писать программы, независимые от компьютера, на котором они выполняются, а также упростить процедуру внесения корректировок в программы. Для определения размера данных в языке Си используется операция sizeof. Первая форма операции выглядит следующим образом:
    БНФ:

    "sizeof(" тип ")"
    Результат этой формы операции - размер данного соответствующего типа в байтах, например, sizeof(float) даст в результате 4.

    Вторая форма операции выглядит следующим образом:
    БНФ:

    "sizeof " имя_данного
    Результат этой формы операции - размер памяти, отведенной под соответствующее данное в байтах, например, после описания массива символов char name[40];, операция sizeof name даст в результате 40.
      1. Приоритеты операций


    Приоритеты и направление рассмотренных выше операций сведены в следующую таблицу. Операции одинакового приоритета объединены в группы, чем выше положение группы в таблице, тем выше приоритет операций группы.
    Таблица приоритетов рассмотренных выше операций

    Операции одного приоритета

    Направление выполнения операции.

    ! ++ -- (тип) sizeof



    * / %



    + -



    << >>



    < <= > >=



    == !=



    &



    ^



    |



    &&



    ||



    = *= /= %= += -= <<= >>= &= ^= |=




    1. 1   ...   6   7   8   9   10   11   12   13   ...   36


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