Поразрядные логические операции (&, |, ^) применяются к целочисленным операндам и работают с их двоичным кодом. При выполнении операций операнды сопоставляются побитно (первый бит первого операнда с первым битом второго, второй бит первого операнда со вторым битом второго и т. д.). Стандартные операции определены для типов int, uint, long и ulong.
При поразрядной конъюнкции, или поразрядном И(операция обозначается &), бит результата равен 1 только тогда, когда соответствующие биты обоих операндов равны 1.
При поразрядной дизъюнкции,или поразрядном ИЛИ(операция обозначается |), бит результата равен 1 тогда, когда соответствующий бит хотя бы одного из операндов равен 1.
При поразрядном исключающем ИЛИ (операция обозначается ^) бит результата равен 1 только тогда, когда соответствующий бит только одного из операндов равен 1.
Пример применения поразрядных логических операций
using System;
namespace ConsoleApplicationl
{ class Classl
{ static void Main() {
Console.WriteLine( 6 & 5 ); // Результат 4
Console.WriteLine( 6 | 5 ); // Результат 7
Console.WriteLineC 6 ^ 5 ); / Результат 3 } } }
Условные логические операции И (&&) и ИЛИ (||) чаще всего используются с операндами логического типа. Результатом логической операции является true или false. Операции вычисляются по сокращенной схеме.
Результат операции логическое Иимеет значение true, только если оба операнда имеют значение true.
Результат операции логическое ИЛИимеет значение true, если хотя бы один из операндов имеет значение true.
Условная операция (? :) — тернарная, то есть имеет три операнда. Ее формат:
операнд1 ? операнд2 : операнд3
Пример применения тернарной операции
using System;
namespace ConsoleApplicationl
{ class Classl
{ static void Main()
{ int a = 11, b = 4;
int max = b > a ? b : a;
Console.WriteLine( max ); // Результат 11
} } }
Другой пример применения условной операции: требуется, чтобы некоторая целая величина увеличивалась на 1, если ее значение не превышает n, а иначе принимала значение 1. Это удобно реализовать следующим образом: i = (i < n) ? i + 1: 1;
Операции присваивания (=, +=, -=, *= и т. д.) задают новое значение переменной. Эти операции могут использоваться в программе как законченные операторы. Механизм выполнения операции присваивания такой: вычисляется выражение и его результат заносится в память по адресу, который определяется именем переменной, находящейся слева от знака операции. То, что ранее хранилось в этой области памяти, естественно, теряется.
Примеры операторов присваивания:
а = b + с / 2;
b = а;
а = b;
х = 1;
х+ = 0.5;
Обратите внимание: b=а и а=b— это совершенно разные действия!
Присваивание — это передача данных «налево».
Результатом операции присваивания является значение, записанное в левый операнд. Тип результата совпадает с типом левого операнда.
В сложных операциях присваивания ( +=, *=, /= и т. п.) при вычислении выражения, стоящего в правой части, используется значение из левой части. Например, при сложении с присваиванием ко второму операнду прибавляется первый, и результат записывается в первый операнд, то есть выражение а += b является более компактной записью выражения а = а + b.
Результатом операции сложного присваивания является значение, записанное в левый операнд.
Операции присваивания выполняются справа налево, в отличие от большинства других операций (а = b = с означает а = (b=c)).