이번 포스팅은 간단하게 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판)" 저자 / 강병익
'Program Language > C#' 카테고리의 다른 글
Part1. C# 첫발 내딛기(17. DivideByZeroException과 try~catch문) (0) | 2023.01.10 |
---|---|
Part1. C# 첫발 내딛기(16. 산술 연산자) (0) | 2023.01.09 |
Part1. C# 첫발 내딛기(14. Convert 클래스) (2) | 2023.01.09 |
Part1. C# 첫발 내딛기(13. 문자열과 숫자의 변환) (0) | 2023.01.08 |
Part1. C# 첫발 내딛기(12. 자료형 변환) (0) | 2023.01.06 |
댓글