ВУЗ:
Составители:
Рубрика:
70
/// </summary>
public void Shift() {
int n = 17, m = 3, p, q;
p = n >> 2;
q = m << 2;
Console.WriteLine("n= " + n + "; m= " + m + "; p=n>>2 = " + p + "; q=m<<2 " + q);
long x = -75, y = -333, u, v, w;
u = x >> 2;
v = y << 2;
w = x/4;
Console.WriteLine("x= " + x + "; y= " + y + "; u=x>>2 = " + u +
"; v=y<<2 " + v + "; w = x/4 = " + w);
} //Shift
4.3.7. Логические операции
В языке C# неявных преобразований к логическому типу нет даже для
целых арифметических типов. Поэтому вполне корректная в языке C++ запись:
int k1 = 7;
if (k1) Console.WriteLine("ok!");
незаконна в программах на C#. На этапе трансляции возникнет ошибка,
поскольку вычисляемое условие имеет тип int, а неявное преобразование этого
типа к типу bool отсутствует.
В языке C# более строгие правила действуют и для логических операций.
Так, запись if(k1 && (x>y)), корректная в языке C++, приводит к ошибке в
программах на C#, поскольку операция && определена только для операндов
типа bool, а в данном выражении один из операндов имеет тип int. В языке C# в
данных ситуациях следует использовать записи:
if(k1>0)
if((k1>0) && (x>y))
Логические операции делятся на две категории: одни выполняются над
логическими значениями операндов, другие осуществляют выполнение
логической операции над битами операндов. По этой причине в C# существуют
две унарные операции отрицания – логическое отрицание, заданное операцией
«!», и побитовое отрицание, заданное операцией «~». Первая из них
определена над операндом типа bool, вторая – над операндом целочисленного
типа, начиная с типа int и выше (int, uint, long, ulong). Результатом операции во
втором случае является операнд, в котором каждый бит заменен его
дополнением. Приведем пример:
/// <summary>
/// Логические выражения
/// </summary>
public void Logic()
Страницы
- « первая
- ‹ предыдущая
- …
- 64
- 65
- 66
- 67
- 68
- …
- следующая ›
- последняя »
