Language/C# [C#] 연산자(Operators)
  • 728x90
    반응형

     

     

     

     

    연산자(Operators)


     

    목차

       

       

       

      연산자(Operators)

      📌 C# 에서는 산술 연산자, 증감 연산자, 조건 연산자, 관계 연산자, 논리 연산자 등 여러 가지의 연산자를 제공한다.

       

      분류 연산자
      수식 연산자 +, -, *, /, % a = b + c
      증감 연산자 ++, -- a++;
      할당 연산자 =, +=, -=, *=, /=, %= a += b + c;
      논리 연산자 &&, ||, ! a && b
      관계 연산자 <, >, ==, !=, >=, <= a > b
      비트 연산자 &, |, ^ a ^ b
      시프트 연산자 >>, << a >> 2

       

       

       

      수식 연산자(+, -, *, /, %)

      📌 수식 연산자에는 덧셈, 뺄셈, 곱셈 나눈셈 그리고 나눗셈을 한 뒤의 나머지를 구하는 연산자들이 있다.

       

      분류 기능
      + 양쪽 피연산자를 서로 더함 a + b
      - 왼쪽 피연산자에서 오른쪽 피연자를 뺌 a - b
      * 양쪽 피연산자를 서로 곱함 a * b
      / 왼쪽 피연산자를 오른쪽 피연산자로 나눔 a / b
      % 왼쪽 피연산자를 오른쪽 피연자로 나눈 뒤의 나머지를 구함 a % b

       

      🔔 예제)

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using System.Threading.Tasks;
      
      namespace ConsoleApp
      {
          class Program
          {
              static void Main(string[] args)
              {
                  int a = 55, b = 4;
      
                  Console.WriteLine("{0} + {1} = {2}", a, b, a + b);
                  Console.WriteLine("{0} - {1} = {2}", a, b, a - b);
                  Console.WriteLine("{0} * {1} = {2}", a, b, a * b);
                  Console.WriteLine("{0} / {1} = {2}", a, b, a / b);
                  Console.WriteLine("{0} % {1} = {2}", a, b, a % b);
              }
          }
      }

       

      결과)

      55 + 4 = 59
      55 - 4 = 51
      55 * 4 = 220
      55 / 4 = 13
      55 % 4 = 3
      계속하려면 아무 키나 누르십시오 . . .

       

      55를 4로 나눴을 때 13.75 가 아니라 13만 출력되는 것은 정수간 나눗셈은 항상 정수로만 나타나기 때문이다. 아래예와 같이 제수나 피제수중 하나를 실수 타입(float, double, decimal)로 변환해 주어야 원하는 값을 얻을 수 있다.

       

      ...
      Console.WriteLine("{0} / {1} = {2}", a, b, a / (double)b);
      Console.WriteLine("{0} / {1} = {2}", a, b, (a + 0.0) / b);
      Console.WriteLine("{0} / {1} = {2}", a, b, 1.0 * a / b);
      ...

       

       

       

      증감 연산자(++, --)

      📌 증감 연산자는 피연산자의 값을 1만큼 증가시키는 증가 연산자와, 1만큼 감소시키는 감소 연산자가 있다.

       

      분류 기능
      ++ (전위 증가 연산자) 피연산자의 값을 1만큼 증가 ++a;
      -- (전위 감소 연산자) 피연산자의 값을 1만큼 감소 --a;
      ++ (후위 증가 연산자) 피연산자의 값을 1만큼 증가 a++;
      -- (후위 감소 연산자) 피연산자의 값을 1만큼 감소 a--;

       

      🔔 예제)

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using System.Threading.Tasks;
      
      namespace ConsoleApp
      {
          class Program
          {
              static void Main(string[] args)
              {
                  int a = 1;
      
                  Console.WriteLine(++a);
                  Console.WriteLine(a++);
                  Console.WriteLine(--a);
                  Console.WriteLine(a++);
              }
          }
      }

       

      결과)

      2
      2
      2
      2
      계속하려면 아무 키나 누르십시오 . . .

       

      전위는 우선 피연산자의 값을 증가시키거나 감소하고 그 문장을 실행하며, 후위는 문장을 먼저 실행하고 그 뒤로 값을 증가시키거나 감소하는 차이점이 있다.

       

       

      관계 연산자(<, >, ==, !=, >=, <=)

      📌 관계 연산자는 두 피연산자의 관계를 알아보는 연산자인데, 크기를 비교하는 연산자, 두 피연산자의 값이 서로 같거나 다른지 확인하는 연산자가 있다.

       

      분류 기능
      < 오른쪽 피연산자가 왼쪽 피연산자보다 크면 참, 작으면 거짓 a < b
      > 왼쪽 피연산자가 오른쪽 피연산자보다 크면 참, 자으면 거짓 a > b
      == 왼쪽 피연산자가 오른쪽 피연산자와 같으면 참, 다르면 거짓 a == b
      != 왼쪽 피연산자가 오른쪽 피연산자와 다르면 참, 같으면 거짓 a != b
      >= 왼쪽 피연산자가 오른쪽 피연산자보다 크거나 같으면 참, 작으면 거짓 a >= b
      <= 오른쪽 피연산자가 왼쪽 피연산자보다 크거나 같으면 참, 작으면 거짓 a <= b

       

      🔔 예제)

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using System.Threading.Tasks;
      
      namespace ConsoleApp
      {
          class Program
          {
              static void Main(string[] args)
              {
                  int a = 50, b = 60;
      
                  Console.WriteLine(a < b);   // 50 < 60, True
                  Console.WriteLine(a > b);   // 50 > 60, False
                  Console.WriteLine(a == b);  // 50 == 60, False
                  Console.WriteLine(a != b);  // 50 !- 60, True
                  Console.WriteLine(a >= b);  // 50 >= 60, False
                  Console.WriteLine(a <= b);  // 50 <= 60, True
              }
          }
      }

       

      결과)

      True
      False
      False
      True
      False
      True
      계속하려면 아무 키나 누르십시오 . . .

       

      💡 Tip : 관계 연산자의 결과는 반드시 참(True) 혹은 거짓(False) 이다.

       

       

       

      할당 연산자(=, +=, -=, *=, /=, %=)

      📌 할당 연산자는 오른쪽 피연산자를 왼쪽 피연산자에 할당하는 기능을 한다.

       

      분류 기능
      = 오른쪽 피연산자를 왼쪽 피연산자에 할당 a = b;
      += a += b는 a = a + b와 같음 a += b;
      -= a -= b는 a = a - b와 같음 a -= b;
      *= a *= b는 a = a * b와 같음 a *= b;
      /= a /= b는 a = a / b와 같음 a /= b;
      %= a %= b는 a = a % b와 같음 a %= b;

       

      🔔 예제)

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using System.Threading.Tasks;
      
      namespace ConsoleApp
      {
          class Program
          {
              static void Main(string[] args)
              {
                  int a = 50, b = 60;
      
                  a += b;
                  Console.WriteLine(a);
                  a -= b;
                  Console.WriteLine(a);
                  a *= b;
                  Console.WriteLine(a);
                  a /= b;
                  Console.WriteLine(a);
                  a %= b;
                  Console.WriteLine(a);
              }
          }
      }

       

      결과)

      110
      50
      3000
      50
      50
      계속하려면 아무 키나 누르십시오 . . .

       

       

       

      논리 연산자(&&, ||, !)

      📌 논리 연산자는 관계 연산자 처럼 값이 True 도는 False가 되는 연산자 이다.

       

      A B A && B
      참(True) 참(True) 참(True)
      참(True) 거짓(False) 거짓(False)
      거짓(False) 참(True) 거짓(False)
      거짓(False) 거짓(False) 거짓(False)

      <논리곱 연산자(&&) 진리표>

       

      A B A || B
      참(True) 참(True) 참(True)
      참(True) 거짓(False) 참(True)
      거짓(False) 참(True) 참(True)
      거짓(False) 거짓(False) 거짓(False)

      <논리합 연산자(||) 진리표>

       

      A !A
      참(True) 거짓(False)
      거짓(False) 참(True)

      <부정 연산자(!) 진리표>

       

      🔔 예제)

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using System.Threading.Tasks;
      
      namespace ConsoleApp
      {
          class Program
          {
              static void Main(string[] args)
              {
                  int a = 50, b = 60;
                              
                  Console.WriteLine(a > 40 && b > 50);            
                  Console.WriteLine(a > 40 || b > 70);            
                  Console.WriteLine(!(a < b));                                          
              }
          }
      }

       

      결과)

      True
      True
      False
      계속하려면 아무 키나 누르십시오 . . .

       

       

      비트 연산자(&, |, ^)

      📌 비트 연산자는 말 그대로 비트를 다루는 데 사용되는 연산자이다.

       

      분류 기능
      & 두 피연산자의 대응되는 비트에 논리곱(AND)을 수행 a & b
      | 두 피연산자의 대응되는 비트에 논리합(OR)을 수행 a | b
      ^ 두 피연산자의 대응되는 비트에 배타적 논리합(XOR)을 수행 a ^ b

       

      & 연산자는 양쪽 비트가 모두 1이어야만 결과가 1이 되고, 그렇지 않으면 결과가 0이 된다. | 연산자는 양쪽 비트 중 하나라도 1 이면 결과가 1이 된다. ^ 연산자는 양쪽 비트가 서로 달라야 결과가 1이 된다.

       

      🔔 예제)

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using System.Threading.Tasks;
      
      namespace ConsoleApp
      {
          class Program
          {
              static void Main(string[] args)
              {
                  int a = 5, b = 10;
                              
                  Console.WriteLine(a & b);            
                  Console.WriteLine(a | b);            
                  Console.WriteLine(a ^ b);                                          
              }
          }
      }

       

      결과)

      0
      15
      15
      계속하려면 아무 키나 누르십시오 . . .

       

      위의 결과가 어떻게 해서 나왔는지 아래를 참고. 10진수 5를 2진수로 나타내면 101(2), 10진수 10을 2진수로 나타내면 1010(2)와 같다.

       

       

      시프트 연산자(>>, <<)

      📌 시프트 연산자도 비트 연산과 관련된 연산자이다. 이 연산자를 통해 첫 번째 피연산자를 두 번째 피연산자로 지정된 비트 수만큼 왼쪽(<<)으로 이동시키거나 오른쪽(>>)으로 이동시킬 수 있다.

       

      🔔 예제)

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using System.Threading.Tasks;
      
      namespace ConsoleApp
      {
          class Program
          {
              static void Main(string[] args)
              {
                  int a = 616;
                              
                  Console.WriteLine(a << 4);            
                  Console.WriteLine(a >> 4);                        
              }
          }
      }

       

      결과)

      9856
      38
      계속하려면 아무 키나 누르십시오 . . .

       

      우선 616을 2진수로 나타내면 1001101000(2) 이다. 이 비트열을 왼쪽으로 4만큼 이동시키면 아래와 같이 10011010000000(2)가 될것이다. 이는 10진수로 나타내면 9856이다. 비트열을 왼쪽으로 이동시키면서 새로 나타난 하위 비트는 0으로 채워진다.

       

      다시 기존 비트열을 오른쪽으로 4만큼 이동시키면 아래와 같이 100110(2)이 될 것이다. 이는 10진수로 나타내면 38이다. 비트열을 오른쪽으로 이동시키면서 새로 나타난 상위 비트는 부호 비트로 채워진다.

       

      💡 Tip : 부호 비트는 양수의 경우는 0, 음수의 경우는 1

       

       

       

       

       

      728x90
      반응형

      'Language > C#' 카테고리의 다른 글

      [C#] 클래스(Class), 접근 제한자(Access Modifier), this  (0) 2019.09.06
      [C#] 배열(Array)  (0) 2019.09.06
      [C#] foreach, Method  (1) 2019.09.06
      [C#] Hello World, 기본 자료형  (0) 2019.09.05
      .NET Framework, .NET Core, Xamarin 차이점  (0) 2019.09.05
    상단으로