Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개임 게발

[C#] 연산자 - 산술 연산, 논리 연산, bool, 비트 연산 본문

개념 정리

[C#] 연산자 - 산술 연산, 논리 연산, bool, 비트 연산

lhgenol 2025. 2. 5. 01:51

산술 연산

  • 연산자는 변수나 값에 대해 계산 또는 조작을 수행하는 기호나 키워드를 의미
  • 산술연산이라고 하면 어려워 보이지만 그냥 사칙연산이라고 생각하면 된다.

산술 연산 정리표

+ 더하기
- 빼기
* 곱하기
/ 나누기
% 나머지
++ 증가
-- 감소

 

더하기 연산

    int x = 10;
    int result;

    result = x + 3; // result : 13

빼기 연산

    int x = 10;
    int result;

    result = x - 5; // result : 5

곱하기 연산(*)

    int x = 10;
    int result;

    result = x * 2; // result : 20

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

    int x = 17;
    int result_1;
    int result_2;

    result_1 = x / 5; // result_1 : 3
    result_2 = x % 5; // result_2 : 2
  • 몫을 구하는 계산: /
  • 나머지를 구하는 계산: %
  • Tip은 / 연산보다 * 연산이 빠르다.
    • x = 10 / 2
    • x = 10 * 0.5f
    • 위 계산의 답은 둘 다 5지만 * 연산이 더 빠르게 처리됨

증감 연산(++, --)

  • 증감 연산은 다른 사칙연산과는 다른 특징을 가지고 있다.
    int x = 10;
    x++; 
    // x : 11

    int y = 10;
    y--;
    // y : 9
  • 1씩 연산
  • 더하고 빼는 값을 마음대로 사용 가능한 다른 연산들과는 다르게 증감은 1씩 계산된다.
    int x = 10;

    Console.WriteLine(x + 10); // 20 출력

    Console.WriteLine(x); // 10 출력
  • 변수에 바로 계산
  • 일반적으로 변수는 연산한 값을 다시 할당하지 않으면 저장되지 않는다.
  • 위 예제에서는 x에 10을 더했지만 다시 할당하지 않았기에 x가 그대로 10인 것을 볼 수 있다.
  • 이 값을 저장하려면 변수에 다시 할당해야 함
    int x = 10;
    x = x + 10; 
    // x 는 처음에 10 이었지만
    // = 를 이용해 x 에 다시 값을 다시 할당함
    // 그리고 할당한 값은 x + 10
    // 여기서 x 는 10 이었으므로 10 + 10 이 됨

    Console.WriteLine(x); // 20 출력
  • 이렇게
    int x = 10;
    x = x + 10; 
    Debug.Log(x) // 20

    int y = 10;
    y += 10;
    Debug.Log(y) // 20

    // + - * / % 다 가능합니다.
    // a += 10;
    // a -= 4;
    // a *= 2;
    // a /= 2;
    // a %= 3;
  • 또한 x = x + 1; 을 줄여서 표현하는 것도 가능하다.
    int x = 10;
    x++; // x++ 를 하고 다시 x 에 할당하지 않았습니다.
    Console.WriteLine(x); // 11 출력

    int y = 10;
    y--; // y++ 를 하고 다시 y 에 할당하지 않았습니다.
    Console.WriteLine(y); // 9 출력
  • 이처럼 일반 연산(+, -, *, /, %)들은 다시 할당해야 값이 저장되지만 증감 연산자는 사용하고 다시 할당하지 않더라도 값이 저장된다.
    int x = 10;
    x++;
    ++x;
  • 전위 연산 / 후위 연산
    int x = 10;
    x++;
    ++x;
  • 증감 연산은 해당 연산을 변수의 앞 혹은 뒤에 붙일 수 있다.
  • 작업을 하고 각 줄의 끝에 세미콜론을 붙인다. 이 세미콜론 기준으로 띄어쓰기를 하고, 이를 각 라인이라고 함
  • C#에서는 라인을 기준으로 한 라인, 한 라인 작업을 수행한다.
    int x = 10;
    Console.WriteLine(x++); // 10 출력. ++ 를 x 뒤에 붙였기 때문에 여기까지는 아직 10
    Console.WriteLine(x); // 11 출력. 이후에는 11로 저장된 것을 볼 수 있다.

    int y = 10;
    Console.WriteLine(++y); // 11 출력. ++ 를 x 앞에 붙였기 때문에 여기서부터 11로 인식
    Console.WriteLine(y); // 11 출력. 물론 이후에도 저장된 11로 남아있다.
  • 그래서 연산자를 뒤에 붙인다면 해당 라인이 끝나고 값이 증가한다.
  • 연산자를 앞에 붙인다면 해당 라인을 실행할 때 증가된 값으로 실행된다.

산술 연산 - 문자열

  • 산술 연산은 일반적으로 숫자를 더하고 빼는 등의 계산을 하지만 문자도 연산할 수 있다.
  • 모든 연산이 가능하진 않지만 + 연산을 활용할 수 있다.
    string hello = "안녕하세요!";
    string academy = "스파르타 코딩클럽 입니다!";

    string result  = hello + academy;
    Console.WriteLine(result);


    실행 결과
    안녕하세요!스파르타 코딩클럽 입니다!
  • 문자열에서 +를 하면 두 문자열을 하나로 이어주는 기능을 한다.
    string hello = "안녕하세요!";

    string result  = hello + "스파르타 코딩클럽 입니다!";
    Console.WriteLine(result);


    실행 결과
    안녕하세요!스파르타 코딩클럽 입니다!
  • 변수 + 문자열 데이터도 연산할 수 있다.
    int year = 2023;

    string result  = year + "년 입니다.";
    Console.WriteLine(result);


    실행 결과
    2023년 입니다.
  • 문자열과 숫자도 같이 계산할 수 있다.

논리 연산 - 같음 연산자

  • 논리 연산: 숫자를 더하거나 빼는 것이 아니라 논리적으로 판단하는 연산자
  • 두 값이 같은지, 다른지, 큰지, 작은지 체크하는 것
  • 같다 부호는 =
  • 같지 않다 부호는 ≠
  • 그런데 ≠는 입력하기 어렵다. 그리고 =도 변수에 데이터를 저장할 때 활용되는 연산자기에 겹친다.
  • 그래서 같다는 ==, 같지 않다는 !=를 사용한다.
    int num = 10;
    bool isSame = num == 10;
    //   true
    int num = 10;
    bool isSame = num != 10;  
    //   false
  • 표시해 준 결과는 bool 형태로 나타난다.

논리 연산 - 비교 연산자

  • 비교 연산자: 어떤 값이 큰지 작은지 비교하는 연산자
  • 크다는 <, 작다는 >
  • 크거나 같을 때는 <=, 작거나 같을 때는 >=
    int age = 23;
    bool isAdult = age > 19;
    //   true
    int age = 23;
    bool isKid = age < 19;
    //   false

논리 연산 정리표

> a > b a 가 b보다 크면 true  
>= a >= b a 가 b보다 크거나 같으면 true  
< a < b b 가 a보다 크면 true  
<= a <= b b 가 a보다 크거나 같으면 true  
== a == b a 와 b 가 같으면 true = 이랑 헷갈리지 말자
!= a != b a 와 b 가 다르면 true  
&& a && b 두가지 조건이 모두 만족하면 true 조건부 논리 연산자
|| a || b 둘 중 하나만 만족하면 true 조건부 논리 연산자
  • 제어문에서 나올 if문이랑 for문 조건식 안에는 무조건 이 논리 연산의 결과가 들어간다고 생각하면 된다.

자료형 - bool

  • 자료형에서 살펴봤듯이 bool(boolean)은 단 두 가지의 값을 가지는 자료형
  • 보통 논리 연산의 결과로 얻게 된다. (true, false)
  • 일반적으로 익숙한 다른 자료형(숫자, 문자)와는 다르게 생소한 형태
  • 두 가지만 있다는 건 알겠고 어떻게 사용하는 거? 주로 어떤 계산이 맞았는지 아닌지 확인할 때 사용
    bool isLarge = 10 > 5;
  • 10 > 5;를 계산했다.
  • 계산이 맞으면 isLarge의 값은 true가 되고 틀리면 flase가 된다.
    int age = 25;
    bool isAdult = age > 19;

    결과 : true
    int age = 12;
    bool isAdult = age > 19;

    결과 : false
  • 이렇게
  • 논리 계산을 통해 true인지 flase인지를 판단하게 되면 제어문에서 핵심적인 기능을 하는 자료형으로써 활용된다.

  • 예를 들어 PC방에서 게임을 하다가 밤 10시가 됐을 때를 생각해 보자.
  • 성인인지 아닌지에 따라 할 수 있는 선택지가 달라지게 된다.
  • 이런식으로 특정한 상황이 되었을 때 어떻게 진행될지 판단근거가 되는 게 bool 자료형.

비트 연산

  • 어려운 연산을 최적화할 때 사용한다.
  • 지금은 그냥 이런 게 있구나 정도로만 알아두자.

비트 연산 정리표

& a & b a와 b비트가 일치하는것을 계산 And 연산자
| a | b a와 b비트 중 하나만 일치해도 계산 Or 연산자
^ a ^ b a와 b비트가 다른것만 계산 Xor 연산자
<< a<<b a의 비트를 왼쪽으로 b만큼 이동 시프트 연산자
>> a>>b a의 비트를 오른쪽으로 b만큼 이동 시프트 연산자