[C# 교과서] 3. C# 기초(2) - 연산자
연산자 개요 및 단항·산술 연산자 사용하기
연산자
데이터로 연산 작업을 수행할 때 연산자 사용
- 단항 연산자: 항 1개로 연산
- 이항 연산자: 항 2개로 연산
- 삼항 연산자: 항 3개로 연산
연산자와 피연산자
int num = 1000;
int number = num + 1234;
위의 코드에서 + 기호가 연산자, num과 1234가 피연산자가 된다.
변환 연산자: () 기호로 데이터 형식 변환하기
int number = (int)3.14;
Console.WriteLine(number);
//result: 3
() 기호를 사용하여 특정 값을 원하는 형식으로 변환할 수 있음
(ex) (int), (long), (double)
산술 연산자
사칙 연산을 하는 연산자
- +: 더하기
- -: 빼기
- *: 곱하기
- /: 나누기(몫) - 0으로 나누면 error 발생
- %: 나머지
using System;
Class OperatorArithemetic
{
static void Main()
{
int a = 5;
int b = 3;
Console.WriteLine(a + b);
Console.WriteLine(a - b);
Console.WriteLine(a * b);
Console.WriteLine(a / b);
Console.WriteLine(a % b);
}
}
/*
<result>
8
2
15
1
2
*/
문자열 연결 연산자
+연산자: 두 항이 숫자일 때는 산술(+) 기능, 문자열 일때는 문자열 연결 기능
string text1 = "Hello";
string text2 = "C#";
Console.WriteLine(text1 + text2);
//result: Hello C#
Console.WriteLine(123 + 456); // result: 579
Console.WriteLine("123" + "456"); // result: 123456
Console.WriteLine(123 + "456"); // result: 123456 (문자열과 숫자형은 문자열로 취급)
Console.WriteLine("123" + true); // result: 123True (문자열과 bool 형식은 문자열로 취급)
할당 연산자와 증감 연산자 사용하기
할당 연산자
변수에 대이터를 대입하는 데 사용하는 연산자로 대입 연산자라고도 불림
- = (A = B): A에 B의 값 대입
- += (A += B): A에 B를 더한 후 그 값을 A에 대입
- -= (A -= B): A에서 B를 뺀 후 그 값을 A에 대입
- *= (A *= B): A에서 B를 곱한 후 그 값을 A에 대입
- /= (A /= B): A에서 B를 나눈 후 그 몫을 A에 대입
- %= (A %= B): A에서 B를 나눈 후 나머지 값을 A에 대입
변수 값 서로 바꾸기
변수의 값을 서로 바꿀 때는 일반적으로 임시로 데이터를 저장할 변수(temp)를 하나 만들어 진행한다.
var i = 100;
var j = 200;
var temp = i;
i = j;
j = temp;
증감 연산자
변수 값을 1 증가시키거다 1 감소시키는 연산자
- ++(증가 연산자): 변수 값에 1을 더함
- --(감소 연산자): 변수 값에 1을 뺌
전위 증감 연산자와 후위 증감 연산자
- 전위 증감 연산자: 변수 앞에 연산자가 위치하여 변수 값을 미리 증감한 후 나머지 연산 수행
- 후위 증감 연산자: 변수 뒤에 연산자가 위치하여 연산식(대입)을 먼저 실행한 수 나중에 변수값을 증감
int i = 3;
int j = ++i;
Console.WriteLine(i, j);
//result: 4, 4
int i = 3;
int j = i++;
Console.WriteLine(i, j);
//result: 4, 3
관계형 연산자와 논리 연산자 사용하기
관계형 연산자
관계형 연산자(비교 연산자)는 두 항이 큰지, 작은지 또는 같은지 등을 비교하는데 사용, 결과값은 논리 데이터 형식인 참(Ture) 또는 거짓(False)로 출력됨
- < (A < B): A가 B보다 작으면 True, 그렇지 않으면 False
- <= (A <= B): A가 B보다 작거나 같으면 True, 그렇지 않으면 False
- > (A > B): A가 B보다 크면 True, 그렇지 않으면 False
- >= (A >= B): A가 B보다 크거나 같으면 True, 그렇지 않으면 False
- == (A == B): A가 B와 같으면 True, 그렇지 않으면 False
- !- (A != B): A가 B와 같지 않으면 True, 그렇지 않으면 False
논리 연산자
논리 연산의 결과 값은 참(True) 또는 거짓(False)의 bool 형식으로 반환됨
- && (A && B): A항과 B항 모두 참(True)일 때만 참(True), 그렇지 않으면 거짓(False)
- || (A || B): A항과 B항 중 하나라도 참(True)이면 참(True), 그렇지 않으면 거짓(False)
- ! (!A): A항이 참(True)이면 거짓(False)을, A항이 거짓(False)이면 참(True)을 반환
비트 연산자와 시프트 연산자로 비트 단위 연산하기
비트 연산자
비트 연산자는 정수형 데이터의 값을 이진수 비트 단위로 연산을 수행할 때 사용
- & (논리곱, AND): 비트 값이 둘 다 1일 때만 1, 그렇지 않으면 0
- | (논리합, OR): 비트 값이 하나라도 1이면 1, 그렇지 않으면 0
- ^ (배타적 논리합, XOR): 비트 값이 서로 다를 때만 1, 그렇지 않으면 0
- ~ (NOT): 비트 값이 1이면 0, 0이면 1
시프트 연산자
시프트 연산자는 정수 데이터가 담겨 있는 메모리의 비트를 왼쪽(<<) 또는 오른쪽(>>)으로 지정한 비트만큼 이동시킴
- <<: 왼쪽 시프트
- >>: 오른쪽 시프트
int number = 2;
Console.WriteLine(number << 1); // 0010(2) -> 0100(4)
Console.WriteLine(number >> 1); // 0010(2) -> 0001(1)
/*
<result>
4
1
*/
조건 연산자
조건 연산자는 조건에 따라서 참일 때와 거짓일 때 결과를 다르게 반환, ? : 형태의 연산자
(조건) ? 참일 때 : 거짓일 때
using System;
Class ConditionalOperator
{
static void Main()
{
int number = 3;
//number가 짝수이면 result 변수에 "짝수", 홀수면 "홀수" 담기
string result = (3 % 2 ==0) ? "짝수" : "홀수";
Console.WriteLine($"{number}은(는) {result}입니다.");
}
}
//result: 3은(는) 홀수입니다.