DevYoon

[C언어] 연산자 본문

언어/C

[C언어] 연산자

gimewn 2022. 4. 23. 01:54

연산자

1️⃣ 산술연산자

  • 이항 연산자

    • +, -, *, /, %
  • 단항 연산자

    • ++, --
    • a++; ➡️ 앞의 식을 처리한 다음 1을 증가시켜라
    • ++a; ➡️ 1을 증가시킨 다음에 식을 처리해라
  • 대입 연산자

    • =, +=, -=, *=, /=, %=

    • 예시

      1) 3/4 = 0
      
      2) a = 10;
         b = a++; → b = a → a += 1   ∴ a = 11, b = 10
         c = ++a; → a += 1 → c = a   ∴ a = 12, c = 12
      
      3) a = 10;
         a += 10;
         ∴ a = 20;
    • 예시

      #include<stdio.h>
      void main(){
          int a, b;
          a = 4*(1/2);
          b = a++;
          printf("%d", b)
      }
      
      ∴ 1 (a = 4*0)
    • 예시

      y = 3+2*(x=7/2)
      
      ∴ x = 6, y = 9
      • 모든 변수는 정수형 ➡️ 7/2는 3
    • 예시

      num = 6+14%5/2-2*2;
      
      1) 14%5 = 4
      2) 4/2 = 2
      3) 2*2 = 4
      4) 6+2-4 = 4

      ∴ num = 4

    • 예시

      int a = 10, b = 20;
      num = (a++ == 11) && (b++ == 20);
      
      1) 10 == 11 → False
      num = 0 (&&는 AND, 하나라도 False이면 False)

      ∴ num = 0

2️⃣ 연산자 우선순위

종류
()
++, --, ~, !
*, /, %
+, -
<<, >>
<, <=, >, >=
==, !=
&, ^, |
&&, ||
=, +=, -=, *=, /=, %=
  • 예시1

    int a = 3;
    int b = 4;
    int c = 5;
    int d = 6;
    • a*b+c>=d&&d/a-b!=0

      • 계산 순서

      • a*b 12
        d/a 2
        a*b+c 17
        d/a-b -2
        a*b+c>=d 1 (True)
        d/a-b!=0 1(True)
        a*b+c>=d&&d/a-b!=0 1(True → 1 && 1 = 1)

        ∴ 1

    • d%b+ ++a*c--

      • 계산 순서

      • a++ a = 4
        d%b 2
        a++*c 20
        c-- c = 4
        d%b+a++*c-- 20+2 = 22

        ∴ 22

  • 예시 2

    #include<stdio.h>
    int main(){
        int a = 5, b = 5;
        a *= 3+b++;
        printf("%d %d", a, b);
        return 0;
    }
    
    1) 3+b => 8
    2) b++ => b = 6
    3) a*=8 => a = 40

    ∴ 40 6

3️⃣ 관계연산자

연산자 예시 결과값
== 10==9 0 (False)
!= 3 != 3 0 (False)
> 5 > 5 0 (False)
>= 5 >= 5 1 (True)
< 7 < 7 0 (False)
<= 7 <= 7 1 (True)

4️⃣ 논리연산자

연산자 예시 결과값
! (not) !9 0 (False)
&& (and) 3 >= 3 && 3 > 3 0 (False)
|| (or) 5>5 || 5>=5 1 (True)
  • 예시

    int a = 3+5, b = 1, c;
    int ap, bp;
    ap = a++;
    bp = ++b;
    b = 3*(ap==8);
    c = 5*(ap != 8);
    
    ∴ a = 9, ap = 8, bp = 2, b = 3, c = 0

5️⃣ 조건문

  • 단순 if문

    if(조건){
        조건이 만족할 때의 처리;
    }
  • if ~ else문

    if(조건){
        조건이 만족할 때의 처리;
    }
    else {
        조건이 만족하지 않을 때의 처리;
    }
  • 다중 if문

    if(조건1){
        조건1이 만족할 때의 처리;
    }
    else if(조건2){
        조건2가 만족할 때의 처리;
    }
    else{
        모든 조건이 만족하지 않을 때의 처리;
    }
  • 예시

    #include<stdio.h>
    int main()
    {
        int i = 3;
        int j = 4;
        if ((++i>j--)&&(i++<--j)) i = i-- + ++j;
        else j = i-- - --j;
        printf("%d\n", i);
    }

    ∴ 2