}
Выполнение этой программы дает следующий результат.
100 / -5 равно -20
100 / -4 равно -25
100 / -3 равно -33
100 / -2 равно -50
100 / -1 равно -100
100 / 1 равно 100
100 / 2 равно 50
100 / 3 равно 33
100 / 4 равно 25
100 / 5 равно 20
Обратите особое внимание на следующую строку из приведенной выше программы.
result = i != 0 ? 100 / i : 0;
В этой строке переменной result
присваивается результат деления числа 100 на значение переменной i. Но это деление осуществляется лишь в том случае, если значение переменной i не равно нулю. Когда же оно равно нулю, переменной result
присваивается значение, обнуляющее результат.
Присваивать переменной результат выполнения оператора ?
совсем не обязательно. Например, значение, которое дает оператор ?
, можно использовать в качестве аргумента при вызове метода. А если все выражения в операторе ?
относятся к типу bool
, то такой оператор может заменить собой условное выражение в цикле или операторе if
. В приведенном ниже примере программы выводятся результаты деления числа 100 только на четные, ненулевые значения.
// Разделить только на четные, ненулевые значения.
using System;
class NoZeroDiv2 {
static void Main() {
for(int i = -5; i < 6; i++)
if(i != 0 ? (i % 2 == 0) : false)
Console.WriteLine("100 / " + i + " равно " + 100 / i);
}
}
Обратите внимание на оператор if
в приведенной выше программе. Если значение переменной i равно нулю, то оператор if
дает ложный результат. А если значение переменной i не равно нулю, то оператор if
дает истинный результат, когда значение переменной i оказывается четным, и ложный результат, если оно нечетное. Благодаря этому допускается деление только на четные и ненулевые значения. Несмотря на то что данный пример служит лишь для целей демонстрации, подобные конструкции иногда оказываются весьма полезными.
Использование пробелов и круглых скобок
В выражении на C# допускается наличие символов табуляции и пробелов, благодаря которым оно становится более удобным для чтения. Например, оба приведенных ниже выражения, по существу, одинаковы, но второе читается легче.
х=10/у*(127+х) ;
х = 10 / у * (127 + х) ;
Скобки могут служить для группирования подвыражений, по существу, повышая порядок предшествования заключенных в них операций, как в алгебре. Применение лишних или дополнительных скобок не приводит к ошибкам и не замедляет вычисление выражения. Поэтому скобки рекомендуется использовать, чтобы сделать более ясным и понятным порядок вычисления как для самого автора программы, так и для тех, кто будет разбираться в ней впоследствии. Например, какое из двух приведенных ниже выражение легче читается?
х = у/3-34*temp+127;
х = (у/3) - (34*temp) + 127;
Предшествование операторов
В табл. 4.2 приведен порядок предшествования всех операторов в С#: от самого высокого до самого низкого. В таблицу включен ряд операторов, рассматриваемых далее в этой книге.
Таблица 4.2. Предшествование операторов в C#

ГЛАВА 5 Управляющие операторы
В этой главе речь пойдет об операторах, управляющих ходом выполнения программы на С#. Управляющие операторы разделяются на три категории: операторы выбора , к числу которых относятся операторы if и switch
, итерационные операторы, в том числе операторы цикла for, while, do-while и foreach
, а также операторы перехода: break, continue, goto, return и throw
. За исключением оператора throw
, который является неотъемлемой частью встроенного в C# механизма обработки исключительных ситуаций, рассматриваемого в главе 13, все остальные управляющие операторы представлены в этой главе.
Оператор if
уже был представлен в главе 2, а здесь он рассматривается более подробно. Ниже приведена полная форма этого оператора:
if ( условие) оператор ; else оператор ;
где условие — это некоторое условное выражение, а оператор — адресат операторов if
и else.
Оператор else
не является обязательным. Адресатом обоих операторов, if
и else
, могут также служить блоки операторов. Ниже приведена общая форма оператора if
, в котором используются блоки операторов.
Читать дальше