В C# на равенство (==) и не равенство (!=) можно сравнивать все объекты (x==’a’).
Но операторы сравнения (<, >, <=, >=) можно применять только к типам, которые поддерживают только отношение упорядочения, т.е к числовым типам.
Например, x>2, z==0, Math.Sin(x)<=5.
Примеры8:
int a, b;
a = 3; b=3;
if (a==b) Console.WriteLine("Переменные равны");
Console.ReadKey();
int a, b;
a = 3; b=0;
if (a==b) Console.WriteLine("Переменные равны");
else if (a>=0) Console.WriteLine("Значение а неотрицательно");
Console.ReadKey();
int a, b;
a = -3; b=0;
if (a==b) Console.WriteLine("Переменные равны");
else if (a>=0) Console.WriteLine("Значение а неотрицательно");
else if (a<0) Console.WriteLine("Значение a отрицательно");
Console.ReadKey();
Операнды логических операций (&, |,!, ^) должны иметь тип bool.
Вычисление с использованием логических операций происходит по разрядно.
Логические операторы выполняют логические операции в соответствии с таблицей:
операнды лог. И лог. ИЛИ не Х1 исключающее ИЛИ
|
|
X1 | X2 | X1 & X2 | X1 | X2 | ! X1 | X1 ^ X2 |
0 0 1 1 | 0 1 0 1 | 0 0 0 1 | 0 1 1 1 | 1 1 0 0 | 0 1 1 0 |
Сокращенные операторы && (И), || (ИЛИ). Различия между обычной и сокращенной версиями заключается в том, что при обычной версии вычисляются оба операнда, а при сокращенной версии второй операнд вычисляется только при необходимости.
Операторы присвоения
Задают новое значение переменной. Имя переменной и результат вычисления выражения должны быть одного типа или совместимыми по присвоению.
Присвоение бывает простое и сложное. При простом присвоении оператор состоит из одного символа (=). Синтаксис оператора:
ИмяПеременной = выражение;
Например, x = x + 1;
y = Math.Sin(x);
Присваиваемое значение должно иметь тип, совпадающий с типом переменной, или допускающий неявное преобразование.
Пример9:
int x=2; double y;
y = x * x;
Console.WriteLine("x={0} y={1}", x, y);
Console.ReadKey();
В противном случае можно использовать явное преобразование, используя синтаксис:
ИмяПеременной = (тип переменной слева от =) выражение;
Пример10:
double x = 2.5; float y=0;
y = (float) (x * x);
Console.WriteLine("x={0,4:f} y={1,4:f}", x, y);
Console.ReadKey();
Пример11:
double x = 2.5; int y=0;
y = (int) (x * x); // 6,25 округляется до 6
Console.WriteLine("x={0,5:f} y={1,5:f}", x, y);
Console.ReadKey();
// Приведение double в int ведет к потере дробной части (в примере 0,25)
Пример12:
double n; int y;
n=5;
y = (int)(Math.Sqrt(n));
Console.WriteLine("y= " +y);
|
|
Console.ReadKey();
Пример13:
byte b,y;
b = 10;
y = (byte)(b * b); //результат представляет выражение int и требует преобразование
Console.WriteLine("y: " +y);
Console.ReadKey();
Оператор сложного присвоения состоит из нескольких знаков без разделителей. Правый символ – знак простого присвоения, слева дополнительные символы, указывающие на тип дополнительной операции, выполняемой перед присваиванием.
Составные операторы | Действие |
X += Y | X = X + Y |
X –= Y | X = X – Y |
X *= Y | X = X * Y |
X /= Y | X = X / Y |
X %= Y | X = X % Y |
X &= Y | X = X & Y |
X |= Y | X = X | Y |
X ^= Y | X = X ^ Y |
Преимущества составных операторов:
§ Составные операторы компактнее своих «длинных» эквивалентов.
§ Их наличие приводит к созданию более эффективного кода (т.к. операнд при этом вычисляется только один раз).
Примеры использования составных операторов:
x=x+10 может бать записано x+=10
x=x–100 может бать записано x–=100
Инструкции
Код приложений в C# состоит из инструкций (команд) с ключевыми словами и выражениями с операторами.
В инструкцию включают объявление переменных, присвоение значений, вызов методов, ветвление на один или другой блок кода, в зависимости от заданного условия.
Инструкция – строка кода, которая заканчивается точкой с запятой.
Блочная инструкция – набор инструкций в фигурные скобки { }. Программный блок представляет собой группирование двух и более инструкций заключенные в фигурные скобки. Последние могут содержать вложенные блоки { {…} }.
Используется для превращения группы операторов в один там, где по правилам языка может применяться только один оператор, а действий несколько.
Программные блоки не снижают динамику выполнения программ.
Пример использования однострочных инструкций и блок многострочной инструкции:
static void Main(string[] args)
{
int i, j, d;
i=5;
j=10;
if (i!= 0)
{
Console.WriteLine("i не равно 0");
d = j / i;
Console.WriteLine("j/i равно "+ d);
}
Console.WriteLine("Нажми клавишу Enter");
Console.ReadKey();
}
Второй вариант:
int i, j, d;
i=0;
j=10;
if (i!=0)
{
Console.WriteLine("i не равно 0");
d = j / i;
Console.WriteLine("j/i равно "+ d);
}
Console.WriteLine("Нажми клавишу Enter");
Console.ReadKey();