이번 글에서는 C#에서 사용할 수 있는 다양한 연산자와 표현식에 대해 알아보겠습니다. 산술 연산자, 비교 연산자, 논리 연산자, 그리고 연산자 우선순위와 문자열 연결 및 보간 방법까지 살펴봅니다. 연산자는 프로그램에서 값을 계산하고 비교하며 논리적인 조건을 평가하는 데 매우 중요한 역할을 합니다.
1. 산술 연산자
산술 연산자는 수학적인 계산을 수행하는 데 사용됩니다. 대표적인 산술 연산자에는 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지 등이 있습니다.
연산자설명예시
+ | 덧셈 | a + b |
- | 뺄셈 | a - b |
* | 곱셈 | a * b |
/ | 나눗셈 | a / b |
% | 나머지 계산 | a % b |
산술 연산자 예제
int a = 10;
int b = 3;
// 덧셈
int sum = a + b; // 10 + 3 = 13
Console.WriteLine($"덧셈 결과: {sum}");
// 뺄셈
int difference = a - b; // 10 - 3 = 7
Console.WriteLine($"뺄셈 결과: {difference}");
// 곱셈
int product = a * b; // 10 * 3 = 30
Console.WriteLine($"곱셈 결과: {product}");
// 나눗셈
double quotient = (double)a / b; // 10을 3으로 나눈 몫 (실수형으로 변환)
Console.WriteLine($"나눗셈 결과: {quotient}");
// 나머지
int remainder = a % b; // 10을 3으로 나눈 나머지
Console.WriteLine($"나머지 결과: {remainder}");
💡 나눗셈 연산 시 주의할 점은 int로 나누면 몫만 남기고 소수점은 버려진다는 점입니다. 정확한 결과를 위해 형 변환을 사용하여 실수형(double 등)으로 계산하는 것이 좋습니다.
2. 비교 연산자
비교 연산자는 두 값을 비교하여 참(true) 또는 **거짓(false)**을 반환합니다. 주로 조건문에서 사용되며, 값이 같거나 크고 작음을 평가할 때 유용합니다.
연산자설명예시
== | 두 값이 같음 | a == b |
!= | 두 값이 다름 | a != b |
> | 왼쪽이 큰 경우 | a > b |
< | 오른쪽이 큰 경우 | a < b |
>= | 왼쪽이 크거나 같음 | a >= b |
<= | 오른쪽이 크거나 같음 | a <= b |
비교 연산자 예제
int x = 5;
int y = 10;
// 두 값이 같은지 비교
bool isEqual = (x == y); // x와 y가 같은지 확인
Console.WriteLine($"x와 y가 같은가? {isEqual}");
// 두 값이 다른지 비교
bool isNotEqual = (x != y); // x와 y가 다른지 확인
Console.WriteLine($"x와 y가 다른가? {isNotEqual}");
// x가 y보다 큰지 비교
bool isGreater = (x > y); // x가 y보다 큰지 확인
Console.WriteLine($"x가 y보다 큰가? {isGreater}");
// x가 y보다 작은지 비교
bool isLess = (x < y); // x가 y보다 작은지 확인
Console.WriteLine($"x가 y보다 작은가? {isLess}");
3. 논리 연산자
논리 연산자는 조건문에서 여러 조건을 결합하여 복합적인 판단을 할 수 있도록 도와줍니다.
연산자설명예시
연산자 | 설명 | 예시 |
&& | 논리적 A | (a > 0) && (b > 0) |
! | 논리적 NOT | !(a > 0) |
논리 연산자 예제
bool isAdult = true;
bool hasID = false;
// 논리적 AND: 두 조건이 모두 참이어야 true
bool canEnter = isAdult && hasID; // 성인이고 신분증이 있어야 입장 가능
Console.WriteLine($"입장 가능 여부: {canEnter}");
// 논리적 OR: 한 조건이라도 참이면 true
bool isChildOrSenior = !isAdult || !hasID; // 어린이이거나 신분증이 없는 경우
Console.WriteLine($"어린이 혹은 신분증 미소지 여부: {isChildOrSenior}");
// 논리적 NOT: 조건의 반대 값
bool isNotAdult = !isAdult; // 성인이 아닌 경우
Console.WriteLine($"성인 여부의 반대: {isNotAdult}");
4. 연산자 우선순위
C#의 연산자는 특정한 우선순위를 가지며, 우선순위가 높은 연산자가 먼저 실행됩니다. 예를 들어, 산술 연산자는 비교 연산자보다 우선순위가 높고, 논리 연산자는 비교 연산자보다 우선순위가 낮습니다.
연산자 우선순위 예제
int a = 10;
int b = 5;
int c = 2;
// 우선순위에 따라 계산: 곱셈과 나눗셈이 덧셈보다 우선
int result = a + b * c; // b * c 먼저 계산, 그 다음 a + (b * c)
Console.WriteLine($"우선순위에 따른 결과: {result}"); // 출력: 20
// 괄호를 사용해 우선순위를 변경
int resultWithParentheses = (a + b) * c; // (a + b) 먼저 계산, 그 다음 * c
Console.WriteLine($"괄호로 우선순위 변경 후 결과: {resultWithParentheses}"); // 출력: 30
💡 우선순위가 헷갈릴 때는 괄호 ()를 사용하여 명시적으로 연산 순서를 지정하는 것이 좋습니다.
5. 문자열 연결 및 보간
C#에서는 문자열을 연결하거나 변수를 문자열 내에 쉽게 포함시키기 위한 방법으로 문자열 연결과 문자열 보간을 제공합니다.
문자열 연결
문자열을 연결할 때는 + 연산자를 사용합니다.
string firstName = "홍";
string lastName = "길동";
// 문자열 연결
string fullName = firstName + lastName;
Console.WriteLine("연결된 이름: " + fullName); // 출력: "홍길동"
문자열 보간 (String Interpolation)
문자열 보간은 $ 기호와 중괄호 {}를 사용하여 문자열 내에 변수를 포함하는 방법입니다. 코드가 더 직관적이고 가독성이 좋습니다.
string name = "홍길동";
int age = 30;
// 문자열 보간을 이용하여 출력
string introduction = $"이름: {name}, 나이: {age}세";
Console.WriteLine(introduction); // 출력: "이름: 홍길동, 나이: 30세"
💡 문자열 보간은 C# 6.0부터 지원됩니다. $를 사용해 쉽게 변수를 문자열 안에 포함시킬 수 있어 가독성이 높아집니다.