C#. Урок 4. Операторы. Часть 1

Уроки для опытных   6 февраля 2013  Автор статьи:  

В этом уроке уделим внимание операторам.

Все операторы можно подразделить на следующие группы:

  • Арифметические
    К ним относятся:

    + * / % << >>

    Интерес представляют операторы << и >>.

    x << y

    Эта запись означает, что первый операнд будет сдвинут на количество бит, указанное вторым операндом (в двоичной системе счисления). То есть, если x=1, y=1, то x после сдвига будет равен 10 в двоичной системе счисления, то есть 2 в десятичной. Заметим, что операнды должны быть типа int (или типа, который неявно к нему приводится).

  • Сравнения

    < > <= >= == !=
  • Логические

    ! && ||
  • Побитовые

    ! & | ^

    При этом & - соответствует логическому умножению, | - логическому сложению, а ^ действует следующим образом: при сравнении двух операндов (x^y) в каждый бит результата записывается 1, если сравниваются 0 и 1. Например, 2^3=1.

  • Присваивания

    = ++ -- += -= *= /= %= &= |= ^=
  • Операторы безусловного перехода

    break continue goto return

    Их применение будет рассмотрено чуть ниже.

  • Условные

    if switch ? : ??


    //if
    if (условие)
    {
    оператор_1;
    ...
    }
    else //необязательно
    {
    оператор_1;
    ...
    }


    //switch
    switch (условие)
    {
    case значение_1: оператор_1;
    оператор_перехода_1;
    ...
    default: //необязательно, если не одно из значений не подходит
    ...
    оператор_перехода_n;
    }

    При этом управление не должно передаваться от одной ветке к другой, то есть всегда должен присутствовать оператор безусловного перехода: break - если необходимо выйти из switch, return или goto - переход к другому case (единственное оправданное использование goto!).
    Также есть тернарный оператор:

    условие ? значение_в_случае_истинности : значение_в_случае_лжи
    int x = (y > 2) ? 1 : 3;

    И последний:

    значение_если_не_null ?? значение_если_null
    int? x = 2;
    int y = 3;
    int? z = x ?? y;
    // это соответствует такому выражению:
    int? z = (x.HasValue) ? x : y;

  • Эмиль

    Добрый вечер!
    У вас тут опечатка — дважды написали одно и то же: «При этом & — соответствует логическому умножению, | — логическому сложению, а ^ действует следующим образом: при сравнении двух операндов (x^y) в каждый бит результата записывается 1, если сравниваются 0 и 1. Например, 2^3=1.»

    • Спасибо, что заметили. Исправили.

Научиться программировать

  • на Delphi

  • на Java

  • на C++