C#/문법 정리

C# - 연산자(Operator)

Khadra 2024. 6. 23. 08:29

연산자(Operator)란?

  • 식에서 수행할 연산을 지정하는 기호이다.
  • C#에서는 많은 연산자를 제공한다.
    • 대부분의 연산자는 보통 기호나 간단한 단어이다.
    • 예 : 3과 4를 더할 때 - 산술연산자 '+'기호를 사용하여 3+4라고 사용한다.
  • 연산자는 중복되어 사용될 수 있으며, 하나의 기호가 여러가지 기능을 할 수 있다.
    • 예 : 3 + 4 = 7 : '+'산술연산자로 사용되어 계산과 결과는 7이다.
    • 예 : "Hello " + "World!" = "Hello World!" : 문자열과 문자열 사이에 있는 '+'는 문자열 연결 연산자로 사용된다.

식 또는 수식(expression)

  • 변수나 상수가 연산자에 의해 연결되면 식 또는 수식(expression)이 된다.
  • 식은 연산자가 여러 개 사용될 때 우선 순위가 중요하다.
    • 예 : 3 + 4 * 5는 '+'와 '' 연산자가 사용되는데 어느 연산자가 먼저 사용되는가에 따라 계산결과가 달라진다. 같은 산술 연산자라도 '+'보다는 ''연산자가 우선순위가 높기에 계산결과 값은 23이 된다.
    • 예 : 만약 '+'가 먼저 계산되게 하고 싶다면 괄호를 사용하면 된다.
      즉, (3 + 4) * 5 와 같이 사용한다. ( ()는 연산자 우선순위가 가장 높다. )

예제 코드

// 수식은 하나의 결과를 만들어 낸다.

// c = a + b라는 식은 a + b를 계산해서 c에 할당하게 되어 화면 c의 값 30을 출력하게 된다.
int a = 10, b = 20, c;
WriteLine(c = a + b);

연산자(Operator)의 종류

연산자의 분류 연산자
산술 연산자 +, -, *, /, %
논리 연산자 !, ~, &&, ||
비트 연산자 &, |, ^, <<, >>
증감 연산자 ++, --
관계 연산자 ==, !=, <, >, <=, >=
문자열 연결 연산자 +
대입 및 복합 연산자 =, +=, -=, *=, /=, %=, <<=, >>=, &=, |=, ^=
멤버 연산자 .
인덱싱 연산자 []
형변환 연산자 ()
조건 연산자 ?:
포인터 및 주소 연산자 *, ->, &
Linq 연산자 =>

연산자 우선순위표

우선운쉬 연산기호 설명
1 (), ., [], ->, 괄호, 결합자, 배열이다.
2 *, &, !, --, ++, -, +,
sizeof new delete
단항연산자라고 불리는 것들인데,
여기서 나오는 -, +는 부호를 의미한다.
3 *, /, % 곱셈, 뺄셈 연산자
4 +, - 덧셈, 뺄셈 연산자
5 <<, >> 비교 시프트 연산자
6 <, <=, =>, > 비교 연산자
7 ==, !== 등가 연산자
8 & 비트 AND 연산자
9 ^ 비트 XOR 연산자
10 | 비트 OR 연산자
11 && 논리 AND 연산자
12 || 논리 OR 연산자
13 ?: 조건 연산자(삼항 연산자에서 사용)
14 =, +=, -=. *=, /=, %=,
<<==, >>==
대입 연산자
15 , 나열 연산자(아규먼트를 나눌 때 사용)

예제 코드

using System;
using static System.Console;//Console단어를 생략(코드길이줄어둠)
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            //3 + 4 * 5의 결과값을 출력. 
            /*가 먼저 계산되므로 23으로 출력됨.
            WriteLine(3 + 4 * 5);/

            //(3 + 4) * 5의 결과값을 출력. 
            //괄호 안의 덧셈이 먼저 계산되므로 35가 출력됨.
            WriteLine((3 + 4) * 5);

            //3 * 4 / 5의 결과값을 출력. 
            //*와 /는 연산순서가 좌에서 우이므로 * 먼저 계산하고 12/5를 나중에 계산. 
            //정수/정수는 결과도 정수이므로 소수점이 없어진 2가 출력됨.
            WriteLine(3 * 4 / 5);

            //3 / 4 * 5의 결과값을 출력. 
            //연산순서가 좌에서 우이므로 /먼저 계산하고
            //0*5를 나중에 계산하여 0이 출력됨.
            WriteLine(3 / 4 * 5);

            //a + b를 계산하고 결과를 c에 할당합니다.
            int a = 10, b = 20, c;
            //c의 값은 30이 출력됨.
            WriteLine(c = a + b);
        }
    }
}

결과

23
35
0
30