본문 바로가기
Program Language/C#

Part1. C# 첫발 내딛기(15. C# 연산자와 식)

by 토담이아빠 2023. 1. 9.

연산자와 식

 

 

이번 포스팅은 간단하게 C#에서 사용하는 연산자의 종류와 사용법에 대해 정리했습니다.


C#의 연산자와 식

 

프로그래밍 언어를 배우고자 한다면 그 언어에서 사용하는 연산자의 종류는 반드시 정리하고 넘어가야합니다. C#의 연산자를 종류별로 정리하면 다음과 같습니다.


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

c#에서는 원칙적으로 포인터 및 주소 연산자는 사용하지 않습니다. 하지만 특수한 경우 unsafe 키워드를 이용하여 사용할 수는 있습니다.

 

변수나 상수가 연산자에 의해 연결되면 식 또는 수식(expression)이 됩니다. 예를 들어 a + b는 수식입니다. 이 수식은 특정 변수에 할당되어 하나의 결과를 만들어 냅니다. 연산자가 여러개 사용될 때는 우선순위가 중요합니다. 예를 들어 3+4*5는 '+'와 '*'연산자가 사용되는데 어느 연산자가 먼저 사용되는가에 따라 계산 결과가 다릅니다. 같은 산술연산자라도 '+'보다는 '*'연산자의 우선순위가 높기 때문에 이 식의 계산 결과는 23이 됩니다. 만약에 +가 먼저 계산되게 하고 싶으면 가장 높은 우선 순위를 가지는 ()연산자를 사용하여 (3+4)*5같이 사용하면 35이라는 결과를 얻을 수 있습니다. 

 

다음은 사칙연산과 ()연산자의 연산자 우선순위를 이용하는 예제입니다.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Operators
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(3 + 4 * 5); // '*'우선 순위가 높으므로 23
            Console.WriteLine((3 + 4) * 5); // '()' 우선 순위가 높으므로 35

            Console.WriteLine(3 * 4 / 5); // 우선순위가 같으므로 순서대로 계산하면 2
            Console.WriteLine(4 / 5 * 5); // 우선순위가 같으므로 순서대로 계산하면 0

            int a = 10, b = 20, c;
            Console.WriteLine(c = a + b); // 30
        }
    }
}

위 예제에서 3 * 4 / 5의 연산은 곱셈과 나눗셈의 연산자는 우선순위가 같으므로 좌에서 우로 순서대로 계산됩니다. 즉 12 / 5 = 2.4이고 정수 / 정수는 결과도 정수이어야 하므로 2가 나옵니다.

 

4 / 5 * 5를 보면 순서대로 계산하면 (0.8) * 5 이지만 위와 마찬가지로 정수/정수는 정수가 나와야 하므로 0.8은 0이 되어서 결과 값은 결국 0이 됩니다.


결과


[Review]

"초보자를 위한 C# 200제(2판)"  저자 / 강병익

댓글