내일배움캠프/IL

[내배캠][Unity_6기][IL] C# 연산자

binary는 호남선 2024. 8. 30. 20:43

  - 다음 내용은 Unity 퀘스트 모음집 \ C# 사전 문법 기초 \  연산자 페이지들을 학습하고 작성되었습니다.

 

산술 연산

가감승제

- 기본적인 사칙연산으로 더하기(+), 빼기(-), 곱하기(*), 나누기(/)

int a = 1;
int b = 2;
int c = 3;
int d = 4;

int result1 = a + 4;    // 5(1 + 4)
int result2 = b - 1;    // 1(2 - 1)
int result3 = c * 3;    // 9(3 * 3)
int result4 = d / 2;    // 2(4 / 2)

나누기, 나머지 연산 (/, %)

- 나누기 연산의 결과값은 몫, 나머지 연산의 결과값은 나머지

int x = 10;
int y = 3;

int quotient = x / y;   // 3
int remainder = x % y;  // 1

곱셈과 나눗셈의 속도 차이

- 곱셈이 나눗셈보다 속도가 빠르므로 나눗셈의 곱셈으로 변환하여 연산하는 것을 권장

ex) 10 / 2 => 10 * 0.5f

 

증감연산

- 변수에 붙어 1씩 더하거나 빼는 연산

- 값을 재할당하지 않아도 값이 변화

// 증감 연산 예
int x = 10;
x++;    // 11
int y = 5;
y--;    // 4

// 다른 연산은 재할당 필요
int a = 3;
Console.WriteLine(a + 3);   // 6
Console.WriteLine(a);   // 3
a = a + 3;	// 재할당
Console.WriteLine(a);   // 6

// 증감 연산은 재할당 필요 없음
int b = 6;
Console.WriteLine(++b); // 7
Console.WriteLine(b);   // 7

전위 / 후위 연산

- 전위 연산은 하나의 라인에서 증감연산을 우선 실행

- 후위 연산은 하나의 라인에서 증감연산을 나중에 실행

// 전위 연산
int a = 10;
// a에 1을 더하는 연산 먼저 수행하고 출력
Console.WriteLine(++a); //  11
Console.WriteLine(a);   // 11

// 후위 연산
int b = 5;
// b를 먼저 출력하고 1을 더하는 연산 수행
Console.WriteLine(b++); // 5
Console.WriteLine(b);   // 6

문자열

+(더하기)로 문자열을 연결할 수 있음, 숫자와 문자열도 연결 가능

string str1 = "Hello";
string str2 = " World!";
Console.WriteLine(str1 + str2);
// 출력 : Hello World!

int year = 2024;
string str3 = "년 입니다.";
string infoStr = year + str3;
Console.WriteLine(infoStr);
// 출력 : 2024년 입니다.

논리 연산

같음 연산자

- 연산자 기준으로 좌우의 값이 같은지 다른지 판별하는 연산

- 같은지 확인하려면 ==를, 다른지 확인하려면 !=를 사용

int x = 10;

bool isSame = x == 10;  // true;
bool isDifferent = x != 10; // false;

비교 연산자

- 연산자 기준으로 좌우의 값 중 어느 것이 크거나 작은지 판별하는 연산

- 좌측의 값이 큰지 확인하려면 >, 작은지 확인하려면 < 사용

- 크거나 같은지 확인하려면 >=, 작거나 같은지 확인하려면 <= 사용

int age = 50;

bool isAdult = age > 19;    // true
bool isKid = age <= 19; // false

조건부 논리 연산자

- AND(&&) : 모든 조건이 참인지 검사하고 둘 다 참이면 true, 하나라도 거짓이면 false

- OR(||) : 조건 중 하나라도 참이면 true, 둘 다 거짓이면 false

bool isA = true;
bool isB = false;

// AND 연산
if (isA && isB)
{
    Console.WriteLine("둘 모두 참입니다.");
}
else
{
    // 둘 중 하나가 거짓이므로 실행
    Console.WriteLine("둘 중 하나는 거짓입니다.");
}

// OR 연산
if (isA || isB) 
{
    // 둘 중 하나가 참이므로 실행
    Console.WriteLine("적어도 하나는 참입니다.");
}
else
{
    Console.WriteLine("둘 모두 거짓입니다.");
}

자료형(bool)

- 조건 분기에서 참거짓을 판별, 흐름 제어에 중요한 역할

int age = 15;
bool canDrink = age > 19;   // false

if (canDrink)
{
    Console.WriteLine("술을 마실 수 있습니다.");
}
else
{
    Console.WriteLine("아직 술을 마실 수 없습니다.");
}

비트 연산

- 비트(bit) 단위로 수행하는 연산

- AND(&) : 둘 모두 1이면 1, 하나라도 0이면 0 (ex) 3(0011) & 5(0101)  => 1(0001)

- OR(|) : 둘 중 하나라도 1이면 1, 둘 모두 0이면 0 (ex) 3(0011) | 5(0101) => 7(0111)

- XOR(^) : 두 비트가 서로 같으면 0, 다르면 1 (ex) 3(0011) | 5(0101) => 6(0110)

- 왼쪽 시프트(<<) : 비트를 왼쪽으로 이동, 2배씩 커짐 (ex) 2(0010) << 1  = 4(0100)

- 오른쪽 시프트(>>) : 비트를 오른쪽으로 이동, 2배씩 작아짐 (ex) 8(1000) >> 2  = 2(0010)

* 시프트 연산시 넘어간 데이터는 사라짐

사칙연산 간 우선순위

- 단항 연산

- 곱셈, 나눗셈, 나머지

- 덧셈, 뺄셈

- 시프트

- 비교 연산

- 비트 연산

- 조건부 논리 연산

출처 : https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/operators/