2023. 4. 15. 20:13ㆍ공부/C#
연산자(산술연산자, 증가/감소 연산자, 관계 연산자, 조건 연산자)
<목차>
1. 산술 연산자
2. 증가/감소 연산자
3. 관계 연산자
4. 조건 연산자
C#에서는 데이터를 자유자재로 다룰 수 있도록 다양한 연산자를 제공한다.
C#이 제공하는 주요 연산자는 다음과 같다.
이번 게시글에서는 산술 연산자, 증가/감소 연산자, 관계 연산자, 조건 연산자에 대해 알아보도록 하자.
1. 산술 연산자
산술 연산자는 문자 그대로 수치 형식의 데이터를 다루는 연산자이며 수치 간의 덧셈과 뺄셈, 곱셈, 나눗셈, 나눗셈의 나머지를 구하는 기능을 제공한다. 또한, 산술 연산자는 수치 형식의 데이터를 다루기 때문에 수치 형식에서만 사용이 가능하다. (정수 형식, 부동 소수점 형식, decimal 형식)
위 연산자들은 한 가지 공통점이 있다. 그것은 바로 두 개의 피연산자를 사용한다는 것이다. 이렇게 연산자가 가운데에 위치하고 양 옆으로 피연산자를 사용하는 연산자를 이항 연산자라고 한다. 이제 예제를 하나 살펴보도록 하자.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Csharp_Project
{
class Arithmetic_Operation
{
static void Main(string[] args)
{
int a = 100 + 200;
Console.WriteLine($"a: {a}");
int b = a - 50;
Console.WriteLine($"b: {b}");
int c = b * 10;
Console.WriteLine($"c: {c}");
int d = 10 / 5;
Console.WriteLine($"d: {d}");
int e = 10 % 3;
Console.WriteLine($"e: {e}");
}
}
}
<실행 결과>
무사히 연산이 실행된 모습이다.
코드 중간에 삽입된 $와 {}은?
$은 문자열 보간을 의미한다. 문자열 보간은 C# 6.0 이후부터 이용 가능한 string 출력 방법으로 string 안에 직접 변수 입력을 집어넣어 문자를 출려할 수 있다.
ex)
int a=5;
Console.WriteLine($"a: {a}");
실행결과: a: 5
큰 따옴표 앞에 $을 붙이면 { }안에 변수를 입력할 수 있다.
2. 증가/감소 연산자
증가 연산자와 감소 연산자는 피연산자의 값을 1 증가시키거나 감소시키는 것이 전부이다. 증가/감소 연산자는 앞서 언급한 산술 연산자와는 달리 하나의 피연산자만을 사용하는 단항 연산자 이다.
증가/ 감소 연산자
int a = 1;
a++; //a=2
a--; //a=1
증가/감소 연산자는 할당 연산자 없이도 (지금은 할당 연산자가 =라고 생각해두자) 해당 변수의 값을 직접 바꿀 수 있다.
a= a+1; 이라고 작성할 필요 없이 a++; 라고만 입력해도 된다는 이야기다.
이제 예제를 살펴보자.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Csharp_Project
{
class Inc_Dec_Operator
{
static void Main(string[] args)
{
int a = 100;
Console.WriteLine(a++);
Console.WriteLine(a--);
int b = 100;
Console.WriteLine(++b);
Console.WriteLine(--b);
}
}
}
<실행 결과>
어라? 결과가 조금 이상하다. a++를 했는데 왜 101이 아닌 100이 나오는 것일까? 또, a와 b는 같은 100값을 가지고 있는데 연산자의 위치가 바뀌었다고 왜 다른 값이 나오는 것일까? 이것은 '전위 증가/감소 연산자'와 '후위 증가/감소 연산자'의 연산 방식의 차이 때문이다.
증가/감소 연산자를 변수의 뒤에 사용하면 해당 문장의 실행이 끝난 후에 변수의 값이 변경된다. 때문에 a++을 출력했을 때에는 100이 출력되지만 100이 출력된 이후 a의 값은 101로 바뀌게 된다. a--가 101로 출력된 이유 또한 마찬가지다. 만약 Console.WriteLine(a--); 다음에 a를 출력한다면 정상적으로 100이 출력될 것이다.
반면 증가/감소 연산자를 변수의 앞에 사용하면 변수의 값을 변경한 후에 해당 문장을 실행한다. 따라서 ++a를 출력했을 때 a의 100값에서 1만큼이 증가된 101값이 바로 출력된 것이다.
이처럼 변수의 뒤에 증가/감소 연산자를 사용하는 것을 '후위 증가/감소 연산자', 변수의 앞에 위치시켜 사용하는 것을 '전위 증가/감소 연산자'라고 한다.
3. 관계 연산자
관계 연산자는 두 피연산자 사이의 관계를 평가한다. 수학에서의 부등호 기호와 유사한 역할을 한다고 생각하면 이해하기 쉬울 것이다. (완전히 같지는 않다) 예를 들어 1<3이라는 식이 있다고 생각해보자. 해당 식은 1이 3보다 작다는 것을 의미하며 이것은 실제로도 맞는 내용이다. 그렇다면 컴파일러는 True값을 내보낸다. 반대로 1>3이라는 식이 있다고 가정하자. 이 식은 1이 3보다 크다는 것을 의미한다. 이것은 잘못된 내용이며 따라서 컴파일러는 False 값을 내보내게 된다.
쉽게 정리하면 관계 연산자는 두 피연산자 사이의 관계를 부등식으로 표현하였을 때 참이냐, 거짓이냐를 판단한다고 보면 된다.
이제 예제를 살펴보자.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Csharp_Project
{
class Relational_Operator
{
static void Main(string[] args)
{
int a = 1;
int b = 2;
Console.WriteLine($"1>2: {a > b}");
Console.WriteLine($"1>=2: {a >= b}");
Console.WriteLine($"1<2: {a<b}");
Console.WriteLine($"1<=2: {a <= b}");
Console.WriteLine($"1==2: {a == b}");
Console.WriteLine($"1!=2: {a != b}");
}
}
}
<실행 결과>
4. 조건 연산자
조건 연산자는 무려 3개의 피연산자를 사용한다. 조건 연산자의 첫번째 매개변수인 조건식은 결과가 참 또는 거짓으로 나오는 논리값이어야 한다. 두, 세번째의 피연산자는 둘의 형식만 동일하다면 어떤 것이든 상관 없다.
우선 예제를 먼저 확인해보자.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Csharp_Project
{
class Conditional_Operator
{
static void Main(string[] args)
{
string result = 10 - 5 > 3 ? "맞습니다" : "틀립니다";
Console.WriteLine($"10-5는 3보다 크다:{result}");
}
}
}
<실행 결과>
조건 연산자를 사용해 조건식이 참일 경우 "맞습니다" 라는 문장을, 거짓일경우 "틀립니다"라는 문장을 출력하도록 하였다. 위 코드에서 사용된 조건식은 10-5>3으로 참인 조건식이다. (당연한 이야기지만 5는 3보다 크다.) 때문에 result는 조건식의 내용이 참이므로 "맞습니다" 라는 string 값을 가지게 된 것이다.
https://zheldajdajd.tistory.com/17
[Unity 공포게임] 1인칭 손전등 라이트 구현
[Unity 공포게임] 1인칭 손전등 라이트 구현 1. 손전등 라이트 구현 2. 손전등 ON/OFF 구현 3. 아이템 습득 구현 1. 손전등 라이트 구현 주변이 어두워 아직은 답단한 게임에 드디어 손전등을 구현할 차
zheldajdajd.tistory.com
위 게시글에서는 조건 연산자를 사용하여 실제로 게임의 기능을 구현하였다. (손전등의 ON/OFF)
+) 예제 코드 모음:
https://github.com/wjdals819/Csharp_Project.git
GitHub - wjdals819/Csharp_Project: C# 실습코드
C# 실습코드. Contribute to wjdals819/Csharp_Project development by creating an account on GitHub.
github.com
'공부 > C#' 카테고리의 다른 글
[C#] Call by reference (참조에 의한 매개변수 전달) (0) | 2023.08.08 |
---|---|
[C#] foreach (0) | 2023.08.07 |
[C#] 변수와 데이터타입 (const/enum/Nullable/var) (0) | 2023.04.01 |
[C#] 변수와 데이터 타입 (값형식, 참조형식) (1) | 2023.03.25 |
[C#] Hello, World! 출력하기 (0) | 2023.03.18 |