포털:고등학교/정보·통신 계열 전문 교과(2015)/프로그래밍/연산자

위키배움터

연산이란?[편집]

▶일정한 규칙에 따라 계산하는것 c언어의 수식은 연산자, 피연산자로 조합되어 구성된다.

※ 연산자(할당, 증감, 관계, 조건, 논리, 비트, 시프트 등), 피연산자(변수, 상수 등)

연산자 우선순위[편집]

⑴괄호 안의 내용부터 처리

⑵상대적인 우선선위에 의해 처리

⑶산술연산자 ->조건연산자순으로 처리

⑷우선순의 동일한 경우 결합성에 의해 처리


연산자의 우선 순위 및 결합성
우선순위 연산의 종류 예시
괄호, 배열 ( ) [ ] ->
단항 연산자 !, ~, + +, - -, (포인터), &(주소), sizeof( ), (자료형)
높음 산술 연산자 , /, %,+, -
시프트 연산자 <<, >>
관계 연산자 <, >, <=, >=
비트 연산자 &,^
낮음 논리 연산자 &&
조건 연산자 ( )? :
할당 연산자 =

조건연산자, 할당연산자의 결합성(좌 <- 우) 이외 다른 모든 결합성(좌 -> 우)

연산자의 기능과 사용법[편집]

⑴ 산술연산자[편집]

- 덧셈, 뺄셈, 곱셈, 나눗셈 등의 연산을 하기 위한 연산자 곱하기는 *로, 나누기는/로 표시

 #include <stdio.h>
 int main( )
 {
 int i = 13, j = 5;
 printf("%d %d %d %d %d", i+j, i-j, i*j, i/j, i%j);
 return 0;
 }

[실행결과 18 8 65 2 3]

⑵ 할당연산자[편집]

- '='를 중심으로 오른쪽의 값이나 수식을 계산하여 왼쪽변수에 저장하라는 의미

  #include <stdio.h>
  int main( )
  {
  int i = 13, j = 5;
  i = j;
  printf("%d\n", i);
  return 0;
  }

[실행결과 5]

⑶ 증감연산자[편집]

- 변숫값을 1씩 증가 또는 감소시키는 연산자

  #include <stdio.h>
  int main( )
  {
  int i = 13, j = 5, temp,
  a = 10, b = 20, c = 30, d = 40;
  temp = ++i; printf("%d %d\n", temp, i);
  temp = i++; printf("%d %d\n", temp, i);
  temp = --j; printf("%d %d\n", temp, j);
  temp = j--; printf("%d %d\n", temp, j);
  ++a; b++; --c; d--;
  printf("%d %d %d %d", a, b, c, d);
  return 0;
  }

[실행결과 14 14 14 15 4 4 4 3 11 21 29 39]


⑷ 관계연산자[편집]

- 두 개 이상의 값을 서로 비교하는 연산자 *비교 결과는 1(참)또는 0(거짓)으로 나타남

관계 연산자의 종류
연산자 설명 연산자 설명
A > B A는 B보다 크다. A > = B A는 B보다 크거나 같다.
A < B A는 B보다 작다. A < = B A는 B보다 작거나 같다.
A = = B A와 B는 서로 같다. A ! = B A와 B는 같지 않다.
  #include <stdio.h>
  int main( )
  {
  int i = 13, j = 5;
  printf("%d %d %d %d %d %d",
  i<j, i>j, i<=j, i>=j, i!=j, i= =j);
  return 0;
  }

[실행결과 0 1 0 1 1 0 ]


⑸ 조건연산자[편집]

- 조건식에 따라 참과 거짓 중 하나를 수행하는 연산자 (연산 결과가 참이면 문장1을 실행하고, 거짓이면 문장 2를 실행한다.)

  #include <stdio.h>
  int main( )
  {
  int i = 13, j = 5, result;
  result = i < j ? 10 : 100;
  printf("%d", result);
  return 0;
  }

[실행결과 100 ]

⑹ 논리연산자[편집]

- 두 개 이상의 값을 비교하여 참이면 1, 거짓이면 0을 나타낸다.

&& : 두 개의 연산 값이 모두 참일 때만 결과가 참(1)이다.
||   : 두 개의 연산 값 중 하나 이상이 참일 때 결과가 참(1)이다.
!    : 연산 값이 참이면 거짓(0), 거짓이면 참(1)이 된다.
  #include <stdio.h>
  int main( )
  {
  int i = 13, j = 5, temp;
  printf("%d %d\n", i = = 13 && j = = 5, i = = 13 && j = = 4);
  printf("%d %d\n", i = = 13 || j = = 4, i = = 12 || j = = 4);
  temp = i; printf("%d ", !temp);
  temp = 0; printf("%d", !temp);
  return 0;
  }

[실행결과 1 0 1 0 0 1 ]


⑺ 비트연산자[편집]

- 비트 단위 논리 연산을 수행하는 연산자

비트 연산자의 종류 및 실행 결과(a=1101, b=0101)
연산자 설명 예시 설명 설명
& 두 수에 대한 비트 단위 and 연산을 수행 a&b 각 자리수 모두 1인경우 1로 표시 이외 0 a&b=0101
l 두 수에 대한 비트 단위 or 연산을 수행 aㅣb 자리수 둘 중 하나만 1이면 1로 표시 이외 0 aㅣb=1101
^ 두 수에 대한 비트 단위 xor 연산을 수행 a^b 같을 경우 0으로 이외 1 a^b=1000
~ 해당 값에 대한 1의 보수를 구함 ~a 0->1 1-> 0 ~a=0010
  1 1 0 1
  0 1 0 1
 --------


  #include <stdio.h>
  int main( )
  {
  int i = 13;
  int j = 5;
  printf("%d %d %d %d", i&j, i|j, i^j, ~i);
  return 0;
  }

[실행결과 5 13 8 -14]

⑻ 시프트연산자[편집]

- 지정된 비트 수만큼 왼쪽 또는 오른쪽으로 이동하는 연산자

  #include <stdio.h>
  int main( )
  {
  int i = 13;
  int j = 5;
  printf("%d %d %d %d", i<<2, i>>2, j<<3, j>>3);
  return 0;
  }
[실행결과 52 3 40 0]