ТЕМА 8: Оператори (Console Application)
Приоритет
Приоритет | Операция |
най-висок | ++ --(postfix) new typeof |
++ --(prefix) + - (унарни операции) | |
* / % | |
+ - (бинарни операции) | |
<< >> | |
< > <= >= is as | |
== != | |
& | |
^ | |
| | |
&& | |
|| | |
?: | |
най-нисък | = *= /= -= <<= >>= &= ^= |= |
Аритметични оператори
-
Пример 1:
namespace ArithmeticOperators
{
class Program
{
static void Main(string[] args)
{
int squarePerimeter = 17;
double squareSide = squarePerimeter/4.0;
double squareArea = squareSide * squareSide;
Console.WriteLine(squareSide); //4.25
Console.WriteLine(squareArea); //18.0625
int a = 5;
int b = 4;
Console.WriteLine(a + b); //9
Console.WriteLine(a + b++); //9
Console.WriteLine(a + b); //10
Console.WriteLine(a + (++b) ); //11
Console.WriteLine(a + b); //11
Console.WriteLine(11/3); //3
Console.WriteLine(11%3); //2
Console.WriteLine(12/3); //4
}
}
}
-
Задача:
Пресметнете лице на кръг по даден радиус ( Math.PI* r * r)
-
Пример 2: Деление на 0
//Деление на 0 при нецелочислена аритметика
Console.WriteLine(1.5/0.0); //Infinity
Console.WriteLine(0.0/0.0); //Not a number NaN
//Деление на 0 не е позволено при целочислена аритметика
Console.WriteLine(5 / 0); // Дава грешка: Division by constant zero
-
Пример 3: Грешки при препълване*
- При byte улавя препълването и не дава грешен резултат:
byte a = 200;
byte b = 200;
// byte sum = a + b;
//още на ниво компилатор дава препълване
// byte -> int
int sum = a + b;
Console.WriteLine(sum);
- При int не се улавя препълване и се дава грешен резултат:
int a = 2000000000;
int b = 2000000000;
//дава грешен резултат
//не улавя препълване при тип int
int sum = a + b;
Console.WriteLine(sum);//-29496729
- checked//за улавяне на грешки от подобен тип
(
int a = 2000000000;
int b = 2000000000;
//улавя грешката заради checked
//int sum = a + b; int-> long
long sum = a + b;
Console.WriteLine(sum);//4000000000
}
Логически оператори
-
Пример 4:
Действие на логическите оператори отрицание - !, конюнкця - &&, дизюнкция - || и изключващо или - ^.
namespace Logic
{
class Program
{
static void Main(string[] args)
{
bool a = true;
bool b = false;
Console.WriteLine(a && b); //False
Console.WriteLine(a || b); //True
Console.WriteLine(a ^ b); //True
Console.WriteLine(!b); //True
Console.WriteLine(b || true); //True
Console.WriteLine(b && true); //False
Console.WriteLine(a || true); //True
Console.WriteLine(a || true); //True
Console.WriteLine(!a); //False
Console.WriteLine((5>7)^(a==b)); //False
}
}
}
Побитови Оператори
-
Пример 5:
Побитовите оператори действат върху цели числа: byte, sbyte, int, uint, long, ulong.
namespace bitwise
{
class Program
{
static void Main(string[] args)
{
ushort a = 3; //00000000 00000011
ushort b = 5; //00000000 00000101
Console.WriteLine(a | b); //00000000 00000111
Console.WriteLine(a & b); //00000000 00000001
Console.WriteLine(a ^ b); //00000000 00000110
Console.WriteLine(~a & b); //00000000 00000100
Console.WriteLine(a << 1); //00000000 00000110
Console.WriteLine(a >>1); //00000000 00000001
}
}
}
-
Задача:
Проверете дали третият бит на едно число е 0 (брои се от ляво на дясно, като се започва от 0).
Пример: 00010010 - да 00011111 - не
Упътване: Ако числото е х, то ((х & (1 << 3))==0).
-
Задача:
Проверете дали бит с номер р на едно число е 1.
-
Задача:
Дадено е цяло число n, число v (v=0 или v=1) и позиция p. Напишете оператори, които поставят в позиция p стойността на v в двоичния запис на n.
Пример: n=5 (00000101), p=2, v=0 изход: 1 (00000001)
Оператори за сравнение
-
Пример 6:
int a = 5;
int b = 4;
Console.WriteLine(a >= b);//True
Console.WriteLine(a != b);//True
Console.WriteLine(a == b);//False
Console.WriteLine(a == a);//True
Console.WriteLine(a != ++b);//False
Console.WriteLine(a > b);//False
-
Задача:
Проверете дали точка зададена с координатите си е вътре в кръг, зададен с координати на центъра и радиуса.
Проверете дали точка зададена с координатите си е вътре в правоъгълник, зададен с координати на горен ляв ъгъл, височина и ширина.
Оператори за присвояване
-
Пример 7:
int x = 6;
int y = 4;
Console.WriteLine(y*=2);//8
int z = y = 3; //y=3 z=3
Console.WriteLine(z);//3
Console.WriteLine(x|= 1);//7
Console.WriteLine(x += 3);//10
Console.WriteLine(x /= 2);//5
Други оператори
-
Пример 8:
+ Конкатенация (долепяне)
string first = "First";
string second = "Second";
Console.WriteLine(first+second);// FirstSecond
Console.WriteLine("The number is: " + 5);
-
Пример 9:
тринарен оператор
int a = 6;
int b = 4;
Console.WriteLine(a>b?"a>b":"b>a");//a>b
int c = b = 10; //b=10; c=10;
Console.WriteLine(c);//10
оператори is, (), typeof, new
Console.WriteLine(a is int);//True
Console.WriteLine((a+b)/2);//8
Console.WriteLine(typeof(int));//System.Int32
int d = new int();
Console.WriteLine(d);//0
КРАЙ
www.youtube.com/watch?v=obJN7CLrAt0&feature=relmfu
00:14:15 - приоритет
00:20:00 - аритметични оператори
00:41:25 - логически оператори
01:04:00 - побитови оператори
01:28:00 - оператори за сравнение и присвояване
01:37:00 - други оператори