[C#] 04. 연산자


Study/C#  2020. 6. 24. 17:46

안녕하세요. 명월입니다.


이 글은 C#에서 사용되는 연산자에 대한 글입니다.


프로그램은 매우 성능이 좋은 계산기와 같습니다. 물론 화면에 보이는 것은 수학적 표시가 보이지 않는 것 같지만, 화면에 그래픽을 나타내는 것, 소리를 나타내는 것등등을 모두 수학적 계산으로 나타냅니다.

그중 수학 계산에서는 가장 중요한건 연산입니다. 연산이란 더하기, 빼기, 곱하기를 뜻합니다. 그런데 프로그램에서 더하기, 빼기만 있는 게 아닙니다.

연산자 사용법 설명
산술 연산자
+ a + b 더하기
- a - b 빼기
* a * b 곱하기
/ a / b 나누기
% a % b 나머지
++ ++a, a++ 값을 하나 증가시킵니다.(전위, 후위 연산자)
-- --a, a-- 값을 하나 감소시킵니다.(전위, 후위 연산자)
관계 연산자
> a > b a가 b보타 크면 true를 반환, 작거나 같으면 false를 반환
>= a >= b a가 b보다 크거나 같으면 true를 반환, 작으면 false를 반환
< a < b a가 b보다 작으면 true를 반환, 크거나 같으면 false를 반환
<= a <= b a가 b보다 작거나 같으면 true를 반환, 크면 false를 반환
== a == b a와 b가 같으면 true를 반환, 다르면 false를 반환
!= a != b a와 b가 다르면 true를 반환, 같으면 true를 반환
비트 연산자
<< a << b 정수 a의 2진수 값을 왼쪽으로 b만큼 이동시키고 나머지는 0으로 채움
>> a >> b 정수 a의 2진수 값을 오른쪽으로 b만큼 이동시키고 나머지를 양수는 0으로 음수는 1로 채움
& a & b a와 b의 and 계산 ex) 4(0100) & 5(0101) = 4(0100)
| a | b a와 b의 or 계산 ex) 4(0100) | 5(0101) = 5(0101)
^ a ^ b a와 b의 xor 계산 ex) 4(0100) ^ 5(0101) = 1(0001)
논리 연산자
&& a && b AND 연산자, 즉 a와 b가 부울 값으로 정의되어 있고 true && true라면 true, true && false 라면 false의 결과를 나타낸다.
|| a || b OR 연산자, 즉 a와 b가 부울 값으로 정의되어 있고 true || true 라면 true, true || fasle 라면 true의 결과를 나타낸다.
대입 연산자
+= a += b a = a + b;와 같은 의미
-= a -= b a = a - b;와 같은 의미
*= a *= b a = a * b;와 같은 의미
/= a /= b a = a / b;와 같은 의미
%= a %= b a = a % b;와 같은 의미
&= a &= b a = a & b;와 같은 의미
|= a |= b a = a | b;와 같은 의미
^= a ^= b a = a ^ b;와 같은 의미
<<= a <<= b a = a << b;와 같은 의미
>>= a >>= b a = a >> b;와 같은 의미
삼항 연산자
? a = b == c ? d : e b와 c가 같으면 a변수에 d의 값을 넣고 b와 c가 다르면 e의 값을 입력

위의 산술 연산자는 일반 수학적 연산과 같습나다

그리고 ++나 --의 전위, 후위 연산자 계산을 하고 나서 증감, 가감을 할 것인가 계산하기 전에 증감, 가감을 할 것인가 차이입니다.

using System;
namespace Exception3
{
  class Program
  {
    // 실행 함수
    static void Main(string[] args)
    {
      // 변수 선언
      int a = 0;
      // 후위 증가 - Debug b는 0, a는 1
      int b = a++;
      // 전위 증가 - Debug c는 2, a는 2
      int c = ++a;
      // 콘솔 출력
      Console.WriteLine("a = " + a);
      Console.WriteLine("b = " + b);
      Console.WriteLine("c = " + c);
      // 아무 키나 누르면 종료
      Console.WriteLine("Press any key...");
      Console.ReadLine();
    }
  }
}

위 예제를 보면 b에는 0이 들어가 있는데, 이는 a가 증가하기 전에 b에 a의 값인 0을 넣고 a값을 1 증가한것입니다.

c의 경우는 a가 1 증가하고 나서 c에 값을 넣었기 때문에 c에도 2가 들어가 있고 a에도 2가 들어가 있습니다.


관계 연산자와 논리 연산자의 경우는 결과 같이 무조건 bool 타입으로 결과가 나오게 됩니다.

그리고 비트 연산자의 경우는 보통 정수 타입에서만 사용이 가능합니다.

using System;
namespace Exception3
{
  class Program
  {
    // 실행 함수
    static void Main(string[] args)
    {
      // 변수 선언
      int a = 1;
      int b = 2;
      // 1 > 2는 false
      bool c = a > b;
      // d는 2진수로 0001
      int d = 0x1;
      // d를 왼쪽으로 한 칸 이동, 0010
      int e = d << 1;
      // 0001 OR 0010 = 0011, 즉 3
      int f = d | e;
      // 콘솔 출력
      Console.WriteLine("c = " + c);
      Console.WriteLine("e = " + e);
      Console.WriteLine("f = " + f);
      // 아무 키나 누르면 종료
      Console.WriteLine("Press any key...");
      Console.ReadLine();
    }
  }
}

삼항식은 제어문의 분기문과 비슷한 처리입니다.

즉, 조건식?에 참이면 앞의 처리식 거짓이면 뒤 처리식이 실행됩니다.

using System;
namespace Exception3
{
  class Program
  {
    // 실행 함수
    static void Main(string[] args)
    {
      // 삼항식에서 true이기 때문에 a는 1이 들어감
      int a = true ? 1 : 2;
      // 삼항식에서 false이기 때문에 b는 2이 들어감
      int b = false ? 1 : 2;
      // 1 > 2는 false이기 때문에 c는 2이 들어감
      int c = 1 > 2 ? 1 : 2;
      // 콘솔 출력
      Console.WriteLine("a = " + a);
      Console.WriteLine("b = " + b);
      Console.WriteLine("c = " + c);
      // 아무 키나 누르면 종료
      Console.WriteLine("Press any key...");
      Console.ReadLine();
    }
  }
}

여기까지 C#에서 사용되는 연산자에 대한 글이었습니다.


궁금한 점이나 잘못된 점이 있으면 댓글 부탁드립니다.