본문 바로가기

C

[C언어] 연산자(Operator)

반응형

연산자(Operator)

- 피연산자 사이에서 계산을 수행하기 위해 사용되는 기호 또는 키워드이다.

- 피연산자 : 변수 or 상수 or 항

- 피연산자의 개수에 따라 단항 연산자와 이항 연산자가 있다.

- 최상위 연산자 : ( ), [ ]

   
종    류 연 산 자
1차 연산자  ( )   [ ]   .   ->
단항 연산자  -   ++   --   ~(비트 부정)   !(논리 부정)   *   &   sizeof(type)
산술 연산자  +   -   *   /   %
비트 이동 연산자  <<   >>
관계 연산자  <   >   <=   >=
동등 연산자  ==   !=
비트 논리 연산자  &   ^   |
논리 연산자  &&   ||   !
조건 연산자  (조건항) ? (항1) : (항2)
대입 연산자  =  +=   -=   *=   /=   %=   &=   ^=   !=   <<=   >>=
콤마 연산자  ,

 

// 전처리문
#include<stdio.h>

int main(){
   // 선언문
   int x = 3 + 4 * 2;
   int y = (3 + 4) * 2;

   int a = 1;   // TRUE
   int b = 0;   // FALSE

   // 입력문
   // 처리문
   // 출력문
   printf("x = %d, y = %d\n\n", x, y);

   printf("a && b = %d\n", a && b);   // AND(논리_곱), a와 b 둘 다 참이면 참
   printf("a || b = %d\n", a || b);   // OR(논리_합),  a와 b 둘 중 하나 참이면 참

   return 0;
}

 


산술 연산자(사칙 연산자)

  - +, -, *, /, %

 

 

▷ 증감 연산자

  - 전위 연산자(++a): 연산 우선순위가 최상인 연산자, 증감하고 나서 연산에 사용

  - 후위 연산자(a++): 연산 우선순위가 최하위 연산자, 연산에 사용하고 나서 증감

// 전처리문
#include<stdio.h>

int main(){

   int x, y;

   x = 10;
   y = 0;

   printf("x = %d, y = %d\n", x, y);

   y = ++x;   // x에 1을 더한 후, x를 y에 대입한다.

   printf("x = %d, y = %d\n", x, y);

   y = x++;   // x를 y에 대입한 후, x에 1을 더한다.

   printf("x = %d, y = %d\n", x, y);

   return 0;
}

 

 

▷ 관계 연산자(비교 연산자)

  - 두 수의 대소 관계를 비교하는 연산자이다.

  - 연산의 결과는 참(1) 또는 거짓(0)으로 나온다.

 

연 산 식 결    과
a > b  a가 b보다 크면 1(참, TRUE), 그렇지 않으면 0(거짓, FALSE)
a >= b  a가 b보다 크거나 같으면 1, 그렇지 않으면 0
a < b  a가 b보다 작으면 1, 그렇지 않으면 0
a <= b a가 b보다 작거나 같으면 1, 그렇지 않으면 0
a == b a와 b가 같으면 1, 다르면 0
a != b a와 b가 다르면 1, 같으면 0

 

#include<stdio.h>

int main(){
   int x = 10, y = 20, z = 10;
   int res;

   res = x > y;                 // x가 y보다 크면 1, 같거나 작으면 0
   printf("res = %d\n", res);

   res = x <= z;                // x가 z보다 작거나 같으면 1, 크면 0
   printf("res = %d\n", res);

   res = x == z;                // x와 z가 같으면 1, 같지 않으면 0
   printf("res = %d\n", res);

   res = y != z;                // y와 z가 같지 않으면 1, 같으면 0
   printf("res = %d\n", res);

   res = (x > y) && (x <= z);   // 둘 다 참이면 1, 거짓이면 0
   printf("res = %d\n", res);

   res = (x > y) || (x <= z);
   printf("res = %d\n", res);   // 둘 중 하나라도 참이면 1, 거짓이면 0

   return 0;
}

 

 

 

▷ 논리 연산자

  - 관계 연산자가 하나 이상일 때 사용한다.

  - 연산의 결과는 참(1) 또는 거짓(0)으로 나온다.

 

연 산 식 결    과
a && b 논리곱(AND)  a가 b가 모두 참이면 1, 그렇지 않으면 0
a || b 논리합(OR)  a와 b 둘 중 하나라도 참이면 1, 그렇지 않으면 0
!a 논리 부정(NOT)  a가 거짓이면 1, 참이면 0

 

 

▷ 비트 연산자

  - 비트로 변환하여 계산을 수행한다.

  - 비트(Bit): Binary Digit(2진수)를 뜻하며, 0과 1로 표현된다.

  - 종류: ~(Not, 비트 부정), &(and), |(or)

 

// 전처리문
#include<stdio.h>

int main(){
   // 선언문
   int x = 7;   // 00000000 00000000 00000000 00000111
   int y = 4;   // 00000000 00000000 00000000 00000100
   int z = 5;   // 00000000 00000000 00000000 00000101

   // 입력문
   // 처리문
   // 출력문
   printf("x & y = %d\n", x & y);   // 00000000 00000000 00000000 00000100
   printf("x | y = %d\n", x | y);   // 00000000 00000000 00000000 00000111
   printf("~z = %d\n", ~z);   // 11111111 11111111 11111111 11111010
                              // 0은 1로 바꾸고 1은 0으로 바꾼다.

   return 0;
}

 

 

★ 5 = 00000000 00000000 00000000 00000101

   -5 = 11111111 11111111 11111111 11111010 = -6

    ※ 맨 앞의 1은 (-) 부호를 나타낸다.

★ 1byte = 8bit

    ※ int는 4byte이므로 32bit로 표현된다.

★ -6은 6(00000000 00000000 00000000 00000110)을 2의 보수한 후, +1을 하면 된다.

 

 

▷ 조건 연산자(삼항 연산자)

  - if~else 제어문의 모체가 된다.

  - 항을 세 개 가지고 있는 연산자이다.

  - (변수 =)조건항 ? 항1 : 항2; 조건항이 참이면 항1, 거짓이면 항2가 실행된다.

 

// 전처리문
#include<stdio.h>

int main(){
   // 선언문
   int x;
   
   // 입력문
   printf("x = ");
   scanf("%d", &x);

   // 처리문
   x >= 0 ? printf("양수\n") : printf("음수\n");

   // 출력문

   return 0;
}

 

 

반응형