2학년/C

[C]변수와 연산자(4)

CS_student 2023. 7. 22. 12:04

4. 비교연산자

  ==, != , > , >= , <, ㅡ=, &&, || , !  등

 C언어에선 다른 고급언어들처럼 별도로 Boolean(논리값) 자료형을 제공하지 않는다. 참과 거짓을 각각 1,0으로 표현한다. 

 

5. 비트연산자 

  bit단위로 논리 연산을 할 때 사용하는 연산자이고 전체 비트를 왼쪽이나 오른쪽으로 이동시킬 때도 사용된다. 

 

 연산자 의미
      & and
      ^     xor
   -모든 비트가 같으면 0,  하나라도 다르면 1 
      | or
     ~ not 
     << 왼쪽 시프트
         - 비트를 왼쪽으로 이동
     >>  오른쪽 시프트
         - 비트를 오른쪽으로 이동

ex1) a=4 (100) , b=6(110)

      a^b =010 

ex2) int x = -1;      // 11111111 11111111 11111111 11111111

        int y = x<<2; //왼쪽으로 2비트 이동

        int z = x<<3;  //왼쪽으로 3비트 이동 

y == -4 // 11111111 11111111 11111111 11111100

z == -8 // 11111111 11111111 11111000 

 

 

기타 

   삼항 연산자 

     // (조건식) ? (참일 때 실행 값) : (거짓일 때 실행 값)

       (5 > 7) ? printf("1") : printf("0");

     --> 0

 

  sizeof 연산자

   단항 연산자로 피연산자의 크기를 바이트 단위로 반환한다. 타입, 변수, 상수를 전달 받을 수 있다.

  

 

연산자 우선순위와 결합방향

   수식 내에 우선순위가 같은 연산자가 둘 이상 있을 때, 연산자의 결합 방향은 어느 연산을 먼저 수행할 지를 결정한다.

 

   a + b + c 의 경우 

     왼쪽에서 오른쪽으로 결합

     -->(a+b) + c 

   a = b = c 의 경우 

     오른쪽에서 왼쪽으로 결합

    --> a = ( b = c ) 

 우선순위 

    일차식 :  () , {} , ->, .  

    단항 연산자:  ! ~ ++ -- - + * & sizeof

    승제 연산자:  * / % 

    가감 연산자: + - 

    시프트 연산자:  << >>

    비교 연산자: < <= > >=

    등가 연산자:   == != 

    비트 연산자:  &  ^ |

    논리 연산자: && 

    조건 연산자: ?:

    대입 연산자: = += -= *= /= %= >>= <<= &= ^= |= 

    콤마 연산자:

 

 *단항, 조건,대입 연산자는 결합방향이 좌 <- 우 이다.