ТЕМА 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 - други оператори

Търсене