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#' 카테고리의 다른 글

상단으로