Полное руководство. С# 4.0 - Шилдт Герберт
Результат выполнения этой программы приведен ниже.Результат и остаток от деления 10 / 3: 3 1Результат и остаток от деления 10.0 / 3.0: 3.33333333333333 1
Как видите, обе операции, % целочисленного типа и с плавающей точкой, даютодин и тот же остаток, равный 1.Операторы инкремента и декремента
Операторы инкремента (++) и декремента (--) были представлены в главе 2. Какстанет ясно в дальнейшем, они обладают рядом особых и довольно интересных свойств.Но сначала выясним основное назначение этих операторов.
Оператор инкремента увеличивает свой операнд на 1, а оператор декрементауменьшает операнд на 1. Следовательно, операторх++;
равнозначен операторух = x + 1;
а операторх--;
равносилен операторух = х - 1;
Следует, однако, иметь в виду, что в инкрементной или декрементной форме значение переменной х вычисляется только один, а не два раза. В некоторых случаях этопозволяет повысить эффективность выполнения программы.
Оба оператора инкремента и декремента можно указывать до операнда (в префиксной форме) или же после операнда (в постфиксной форме). Например, операторх = х + 1;
может быть записан в следующем виде:++х; // префиксная форма
или же в таком виде:х++; // постфиксная форма
В приведенном выше примере форма инкремента (префиксная или постфиксная)особого значения не имеет. Но если оператор инкремента или декремента используется в длинном выражении, то отличие в форме его записи уже имеет значение. Когдаоператор инкремента или декремента предшествует своему операнду, то результатомоперации становится значение операнда после инкремента или декремента. А когдаоператор инкремента или декремента следует после своего операнда, то результатомоперации становится значение операнда до инкремента или декремента. Рассмотримследующий фрагмент кода.х = 10;у = ++х;
В данном случае значение переменной у будет установлено равным 11, посколькузначение переменной х сначала увеличивается на 1, а затем присваивается переменнойу. Но во фрагменте кодах = 10;у = х++;
значение переменной у будет установлено равным 10, так как в этом случае значениепеременной х сначала присваивается переменной у, а затем увеличивается на 1. В обоих случаях значение переменной х оказывается равным 11. Отличие состоит лишь том,когда именно это значение станет равным 11: до или после его присваивания переменной у.
Возможность управлять моментом инкремента или декремента дает немало преимуществ при программировании. Обратимся к следующему примеру программы,в которой формируется последовательный ряд чисел.// Продемонстрировать отличие между префиксной// и постфиксной формами оператора инкремента (++).using System;class PrePostDemo { static void Main() { int x, y; int i; x = 1; У = 0; Console.WriteLine("Ряд чисел, полученных " + "с помощью оператора у = у + х++;"); for(i = 0; i < 10; i++) { у = у + х++; // постфиксная форма оператора ++ Console.WriteLine(у + " "); } Console.WriteLine(); x = 1; У = 0; Console.WriteLine("Ряд чисел, полученных " + "с помощью оператора у = у + ++х;"); for(i = 0; i < 10; i++) { у = у + ++х; // префиксная форма оператора ++ Console.WriteLine(у + " "); } Console.WriteLine(); }}
Выполнение этой программы дает следующий результат.Ряд чисел, полученных с помощью оператора у = у + х++1361015142128364555Ряд чисел, полученных с помощью оператора у = у + ++х;25914202735445465
Как подтверждает приведенный выше результат, в оператореу = у + х++;
первоначальное значение переменной х складывается с самим собой, а полученныйрезультат присваивается переменной у. После этого значение переменной х увеличивается на 1. Но в оператореу = у + ++х;
значение переменной х сначала увеличивается на 1, затем складывается с первоначальным значением этой же переменной, а полученный результат присваивается переменной у. Как следует из приведенного выше результата, простая замена префикснойформы записи оператора ++х постфиксной формой х++ приводит к существенномуизменению последовательного ряда получаемых чисел.
И еще одно замечание по поводу приведенного выше примера: не пугайтесь выражений, подобных следующему:у + ++x
Такое расположение рядом двух операторов может показаться не совсем привычным, но компилятор воспримет их в правильной последовательности. Нужно лишьзапомнить, что в данном выражении значение переменной у складывается с увеличенным на 1 значением переменной х.Операторы отношения и логические операторы
В обозначениях оператор отношения и логический оператор термин отношения означает взаимосвязь, которая может существовать между двумя значениями, а терминлогический — взаимосвязь между логическими значениями "истина" и "ложь". И поскольку операторы отношения дают истинные иди ложные результаты, то они нередко применяются вместе с логическими операторами. Именно по этой причине они ирассматриваются совместно в данном разделе.
Ниже перечислены операторы отношения.ОператорЗначение==Равно!=Не равно>Больше<Меньше>Больше или равно<=Меньше или равно
К числу логических относятся операторы, приведенные ниже.
Результатом выполнения оператора отношения или логического оператора является логическое значение типа bool.
В целом, объекты можно сравнивать на равенство или неравенство, используя операторы отношения == и !=. А операторы сравнения <, >, <= или >= могут применятьсятолько к тем типам данных, которые поддерживают отношение порядка. Следовательно, операторы отношения можно применять ко всем числовым типам данных. Но значения типа bool могут сравниваться только на равенство или неравенство, посколькуистинные (true) и ложные (false) значения не упорядочиваются. Например, сравнение true > false в C# не имеет смысла.
Операнды логических операторов должны относиться к типу bool, а результат выполнения логической операции также относится к типу bool. Логические операторы&, |, ^ и ! поддерживают основные логические операции И, ИЛИ, исключающее ИЛИи НЕ в соответствии с приведенной ниже таблицей истинности.pqp & qp | qp ^ q|Pfalsefalsefalsefalsefalsetruetruefalsefalsetruetruefalsefalsetruefalsetruetruetruetruetruetruetruefalsefalse
Как следует из приведенной выше таблицы, результатом выполнения логическойоперации исключающее ИЛИ будет истинное значение (true), если один и толькоодин ее операнд имеет значение true.
Ниже приведен пример программы, демонстрирующий применение несколькихоператоров отношения и логических операторов.// Продемонстрировать применение операторов// отношения и логических операторов.using System;class RelLogOps { static void Main() { int i, j; bool b1, b2; i = 10; j = 11; if(i < j) Console.WriteLine("i < j"); if(i <= j) Console.WriteLine("i <= j"); if(i != j) Console.WriteLine("i != j"); if(i == j) Console.WriteLine("Нельзя выполнить"); if(i >= j) Console.WriteLine("Нельзя выполнить"); if(i > j) Console.WriteLine("Нельзя выполнить"); b1 = truer b2 = false; if(b1 & b2) Console.WriteLine("Нельзя выполнить"); if(!(b1 & b2)) Console.WriteLine("!(b1 & b2) — true"); if(b1 | b2) Console.WriteLine("b1 | b2 - true"); if(b1 ^ b2) Console.WriteLine("bl ^ b2 — true"); }}
Выполнение этой программы дает следующий результат.i < ji <= ji != j!(b1 & b2) — trueb1 | b2 — trueb1 ^ b2 — true
Логические операторы в C# выполняют наиболее распространенные логическиеоперации. Тем не менее существует ряд операций, выполняемых по правилам формальной логики. Эти логические операции могут быть построены с помощью логических операторов, поддерживаемых в С#. Следовательно, в C# предусмотрен такой набор логических операторов, которого достаточно для построения практически любойлогической операции, в том числе импликации. Импликация — это двоичная операция, результатом которой является ложное значение только в том случае, если левыйее операнд имеет истинное значение, а правый — ложное. (Операция импликации отражает следующий принцип: истина не может подразумевать ложь.) Ниже приведенатаблица истинности для операции импликации.pqРезультат импликации p и qtruetruetruetruefalsefalsefalsefalsetruefalsetruetrue
Откройте для себя мир чтения на siteknig.com - месте, где каждая книга оживает прямо в браузере. Здесь вас уже ждёт произведение Полное руководство. С# 4.0 - Шилдт Герберт, относящееся к жанру Программирование. Никаких регистраций, никаких преград - только вы и история, доступная в полном формате. Наш литературный портал создан для тех, кто любит комфорт: хотите читать с телефона - пожалуйста; предпочитаете ноутбук - идеально! Все книги открываются моментально и представлены полностью, без сокращений и скрытых страниц. Каталог жанров поможет вам быстро найти что-то по настроению: увлекательный роман, динамичное фэнтези, глубокую классику или лёгкое чтение перед сном. Мы ежедневно расширяем библиотеку, добавляя новые произведения, чтобы вам всегда было что открыть "на потом". Сегодня на siteknig.com доступно более 200000 книг - и каждая готова стать вашей новой любимой. Просто выбирайте, открывайте и наслаждайтесь чтением там, где вам удобно.

