|
Главная » 2010 » Февраль » 11 » Логические операторы присваивания
00:00 Логические операторы присваивания |
Логические операторы присваивания Последние операторы, которые нам осталось обсудить в этом разделе,— это комбинация рассмотренных выше операторов с оператором присваивания. Они во многом сходны с математическими операторами присваивания, рассматривавши- мися в предыдущей главе ( + = , *= и т.д.). Логические операторы приведены в следующей таблице: Оператор Тип Пример выражения Результат Бинарный Бинарный Бинарный varl &= var2; varl 1= var2; varl A= var2; Переменной varl присваивается значение, являющееся результатом выполнения операции varl & var2 Переменной varl присваивается значение, являющееся результатом выполнения операции varl I var2 Переменной varl присваивается значение, являющееся результатом выполнения операции varl л var2 Эти операторы используются как с логическими, так и с численными значениями, точно так же, как и операторы &, | и ". Обратите внимание, что при выполнении операторов (£= и |= применяются операторы & и \, а не && и \\, что приводит к издержкам, характерным для этих более простых операторов. Для операторов побитового сдвига также существуют соответствующие опера- торы присваивания: Оператор Тип Пример выражения Результат Унарный Унарный varl »= var2; varl «= var2; Переменной varl присваивается значение, которое получается в результате сдвига двоичного содержимого переменной varl вправо на число битов, равное значению переменной var2 v Переменной varl присваивается значение, которое получается в результате сдвига двоичного содержимого переменной varl влево на число битов, равное значению переменной var2 Глава 4 Практикум: использование логических операторов и операторов работы с битами 1. Создайте новое консольное приложение с именем ch04Ex0i В директории C:\BegCSharp\Chapter4. 2. Добавьте следующий код в ciassi.cs: static void Main (string [] args) int myint = Convert.Tolnt32(Console«ReadLineO); Console.WriteLine('Integer less than 10? {0}*, myint < 10); Console.WriteLine('Integer between 0 and 5? {0}", Console.WriteLine(«Bitwise AND of Integer and 10 = {0}", myint & 10) ; 3. Запустите приложение; в ответ на приглашение введите целое число: Ш C:\8egCSharp Enter an Int 6 Integer less \Chapter4\ChG4F4 0 3 eger: than 10? Ti4ie Integer between 0 and 5? F< Bitwise ftNP iPress ant? J<e of Integer and у to continue 18 « 2 К I : ' »• Как это работает Первые две строки кода выводят приглашение к вводу целого числа, что реали- зуется знакомым нам методом: Ш '№•;••;••••. int.mylnt = Convert.Tolnt32(Console.ReadLineO ); Оператор convert.Toint32 используется для того, чтобы получить целое число из введенной текстовой строки. Он представляет собой еще одну команду из того Же СемеЙСТВа, К КОТОрОМу ОТНОСИТСЯ C o n v e r t . ToDouble () . Оставшиеся три строки кода выполняют различные операции над введенным числом и выводят их результат. Мы рассмотрим работу данного кода, исходя из предположения, что пользователь ввел число 6, как это изображено на рисунке. Сначала выводится результат выполнения операции myint < ю. Поскольку myint равняется 6, т. е. меньше 10, то в результате получается значение true, которое мы и наблюдаем в выходном потоке. При значении myint, равном или превосходя- щем 10, результатом будет false. Вторым будет выведено значение, которое предполагает более сложные вычис- ления: {о <= myint) && (myint <= 5). Здесь проводятся две операции сравнения, которые позволяют установить, является ли значение myint большим или рав- ным 0, а также меньшим или равным 5, и логическая операция AND, выполняемая над результатами сравнений. При значении myint, равном 6, (О <= myint) возвра- щает значение true, a (myint <= 5) возвращает значение false. Для получения окончательного результата вычисляется выражение (true) && (false), которое дает значение false, что и отображается на консоли. Управление порядком выполнения 55 1 О 6 10 Наконец, мы производим побитовую операцию AND над значением переменной my int. В качестве второго операнда используется число 10, которое имеет двоич- ное представление 1010. Если значение myint рав- няется 6, что в двоичном виде выглядит как 110, то в результате выполнения этой операции полу- & чается двоичное число 10, или 2 в десятичном 0 0 1 0 2 представлении (см. рис. справа). Старшинство операторов с дополнениями Теперь, когда мы рассмотрели несколько новых операторов, возникает необхо- димость внести в таблицу старшинства операторов, приведенную в предыдущей главе, определенные изменения: Старшинство Операторы Высшее ++, -- (используемые в качестве префиксов); ( ) , + , - (унарные), !, ~ <, >, <=, >= Низшее I && I I = , / = ,% = , + = , - = , « = , »=, & = , Л = , | = — (используемые в качестве суффиксов) Нам пришлось ввести в эту таблицу несколько новых уровней, зато теперь она точно определяет, каким образом следует вычислять выражения, например: varl - var2 <= 4 && var2 >= 2; в котором оператор && выполняется после операторов < = и >=. Здесь необходимо отметить тот факт, что совершенно не возбраняется исполь- зовать скобки с целью сделать выражения более понятными. Компилятор в любом случае разберется, в каком порядке следует выполнять операторы, а вот нам, лю- дям, свойственно забывать о таких вещах (а ведь может возникнуть необходимость внести изменения в заданный порядок). Записав вышеприведенное выражение следующим образом: varl = (var2 <= 4) && (var2 >= 2 ) ; мы сумеем решить эту проблему, явно указав последовательность выполнения операций.
|
Категория: информатика |
Просмотров: 1189 |
Добавил: basic
| Рейтинг: 0.0/0 |
|
Статистика
Онлайн всего: 1 Гостей: 1 Пользователей: 0
|