29. [기본 문법 활용하기] 연산자

수제비 2022 정보처리기사 실기 수험서를 보고 공부한 기록입니다.


👉연산자(Operator) 개념

  • 연산자는 프로그램 실행을 위해 연산을 표현하는 기호이다
  • 연산자에는 산술 연산자, 시프트 연산자, 관계 연산자, 논리 연산자 등이 있다

👉연산자 종류

  • 증감 연산자: ++x, x++, --x, x--
  • 산술 연산자: +, -, *, /, %
  • 시프트 연산자: ≪, ≫
  • 관계 연산자: >, <, ≥, ≤, ==, !=
  • 비트 연산자: &, |, ^, ~
  • 논리 연산자: &&, ||, !
  • 삼항 연산자: (조건식)? a : b
  • 대입 연산자: =, +=, -=, *=, /=, %=

👉연산자 우선순위

우선순위연산자항의 개수유형
0( )-괄호
1x++단항 연산자증감 연산자
x--단항 연산자증감 연산자
2++x단항 연산자증감 연산자
--x단항 연산자증감 연산자
!단항 연산자논리 연산자
~단항 연산자비트 연산자
3*이항 연산자산술 연산자
/이항 연산자산술 연산자
%이항 연산자산술 연산자
4+이항 연산자 산술 연산자
-이항 연산자산술 연산자
5이항 연산자시프트 연산자
이항 연산자시프트 연산자
6<이항 연산자관계 연산자
이항 연산자관계 연산자
>이항 연산자관계 연산자
이항 연산자관계 연산자
7\==이항 연산자관계 연산자
!=이항 연산자관계 연산자
8&이항 연산자비트 연산자
9^이항 연산자비트 연산자
10|이항 연산자비트 연산자
11&&이항 연산자논리 연산자
12||이항 연산자논리 연산자
13(조건식)? a : b삼항 연산자삼항 연산자
14\=대입 연산자대입 연산자
+=대입 연산자대입 연산자
-=대입 연산자대입 연산자
*=대입 연산자대입 연산자
/=대입 연산자대입 연산자
%=대입 연산자대입 연산자

👉연산자 종류 상세

1. 증감 연산자(Increment & Decrement Operator)

  • 증감 연산자는 피연산자를 1씩 증가 혹은 1씩 감소시킬 때 사용하는 연산자이다
  • ++x : 변수의 값을 1 증가시킨 후에 해당 변수를 사용하는 연산자
  • x++ : 변수를 사용한 후에 변수의 값을 1 증가시키는 연산자
  • --x : 변수의 값을 1 감소시킨 후에 해당 변수를 사용하는 연산자
  • x-- : 변수를 사용한 후에 변수의 값을 1 감소시키는 연산자

■ C 언어 print 함수 증감 연산자

#include <stdio.h>

void main() {
  int x=3, y=3;
  //x와 y를 3으로 초기화
  printf("%d\n", x++);
  //x++일 경우 x의 값인 3을 먼저 출력한 후에 x의 값을 1 증가
  printf("%d\n",x);
  //x의 값인 4를 출력
  printf("%d\n",++y);
  //++y일 경우 y의 값을 1 증가시킨 후에 y의 값인 4를 출력
  printf("%d\n",y);
  //y의 값인 4를 출력
}

3
4
4
4

■ C 언어 switch문 증감 연산자 예제

#include <stdio.h>

void main() {
  int x=3, y=3;
  //x와 y를 3으로 초기화
  switch(x++){
    case 3: printf("A: %d\n",x); break;
    case 4: printf("B: %d\n",x);
    }
//x++일 경우 x의 값인 3에 해당하는 case3으로 이동한 후에 x를 1증가 시키므로 case 3 안에 있는 printf를 출력하고 x는 4가 출력

switch(++y){
  case 3: printf("C: %d\n", y); break;
  case 4: printf("D: %d\n", y);
  }
  //++y일 경우 y를 1 증가시킨 후에 y의 값인 4에 해당하는 case 4로 이동한 후에 case 4 안에 있는 printf를 출력하고 y는 4가 출력
}

A: 4
D: 4

■ 다른 연산자 함께 사용하는 증감 연산자

#include <stdio.h>
void main(){
  int x=3, y=3;
  //x와 y를 3으로 초기화
  int z=x++ + ++y;
  printf("%d %d %d", x,y,z);
  //x++일 경우 x의 값인 3을 먼저 연산에 사용하고 x를 증가시키고, ++y일 경우 y의 값을 1증가시킨 후에 y의 값인 4를 연산에 사용하므로 3+4인 7이 z에 저장됨
}

4 4 7

■ 단순 증감 연산자

#include <stdio.h>
void main(){
  int x=3, y=3;
  //x와 y를 3으로 초기화
  x++;
  //x++가 단독으로 있을 경우 단순히 1만 증가
  ++y;
  //++y가 단독으로 있을 경우 단순히 1만 증가
  printf("%d %d", x,y);
}

4 4

2. 산술 연산자(Arithmetic Operator)

산술 연산자는 +, -와 같이 가장 일반적으로 사용되는 연산자이다

연산자내용
+-양쪽의 값을 더하는 연산자
-문자열끼리 더할 경우 문자열을 연결
--왼쪽 값에서 오른쪽 값을 빼는 연산자
*-두 개의 값을 곱하는 연산자
/-왼쪽 값을 오른쪽 값으로 나누는 연산자
%-왼쪽 값을 오른쪽 값으로 나눈 나머지를 계산하는 연산자

3. 시프트 연산자(Shift Operator)

시프트 연산자는 비트를 이동시키는 연산자이다

연산자내용
<<왼쪽 값을 오른쪽 값만큼 비트를 왼쪽으로 이동하는 연산자
>>왼쪽 값에 오른쪽 값만큼의 부호 비트를 채우면서 오른쪽으로 이동하는 연산자

■ 시프트 연산자 자바 코드 예제

public class Soojebi{
	public static void main(String[] args){
		System.out.print(3<<2);
		//12를 출력함
		System.out.print(8>>3);
		//1을 출력함
	}
}

121

4. 관계 연산자(Relation Operator)

관계 연산자는 두 피연산자 사이의 크기를 비교하는 연산자이다

연산자내용
>왼쪽에 있는 값이 오른쪽에 있는 값보다 크면 참을 반환하고, 그렇지 않으면 거짓을 반환하는 연산자
<왼쪽에 있는 값이 오른쪽에 있는 값보다 작으면 참을 반환하고, 그렇지 않으면 거짓을 반환하는 연산자
>=왼쪽에 있는 값이 오른쪽에 있는 값보다 크거나 같으면 참을 반환하고, 그렇지 않으면 거짓을 반환하는 연산자
<=왼쪽에 있는 값이 오른쪽에 있는 값보다 작거나 같으면 참을 반환하고, 그렇지 않으면 거짓을 반환하는 연산자
\==왼쪽에 있는 값이 오른쪽에 있는 값과 같으면 참을 반환하고, 그렇지 않으면 거짓을 반환하는 연산자
!=왼쪽에 있는 값이 오른쪽에 있는 값과 다르면 참을 반환하고, 그렇지 않으면 거짓을 반환하는 연산자

■ C 언어 관계 연산자

#include <stdio.h>
void main(){
	printf("%d\n", 3==3);
	//관계 연산 결과가 참일 때 출력
	printf("%d\n", 5==3);
	//관계 연산 결과가 거짓일 때 출력
}

1
0

■ 자바 관계 연산자

class Soojebi{
	public static void main(String[] args){
		System.out.println(3==3);
		//관계 연산 결과가 참일 때 출력
		System.out.println(5==3);
		//관계 연산 결과가 거짓일 때 출력
	}
}

true
false

■ 파이썬 관계 연산자

printf(3==3)
#관계 연산 결과가 참일 때 출력
printf(5==3)
#관계 연산 결과가 거짓일 때 출력

True
False

5. 비트 연산자(Bit Operator)

비트 연산자는 0과 1의 각 자리에 대한 연산을 수행하는 연산자이다

연산자내용
&두 값을 비트로 연산하여 같은 비트의 값이 모두 1이면 해당 비트 값이 1이 되고, 그렇지 않으면 0이 되는 연산자(AND 연산자)
|두 값을 비트로 연산하여 같은 비트의 값이 하나라도 1이면 해당 비트 값이 1이 되고, 그렇지 않으면 0이 되는 연산자(OR 연산자)
^두 값을 비트로 연산하여 같은 비트의 값이 서로 다르면 해당 비트 값이 1이 되고, 그렇지 않으면 0이 되는 연산자(XOR 연산자)
~모든 비트의 값을 반대로 바꾸는 반전 기능을 하는 연산자(NOT 연산자)

■ 비트 연산자

#include <stdio.h>
void main(){
	printf("%d\n", 13 & 10);
	//13과 10에 대해 비트끼리 AND 연산
	printf("%d\n", 13 | 10);
	//13과 10에 대해 비트끼리 OR 연산
	printf("%d\n", 13 ^ 10);
	//13과 10에 대해 비트끼리 XOR 연산
	printf("%d\n", ~13);
	//13과 10에 대해 비트끼리 NOT 연산
}

8
15
7
-14

6. 논리 연산자(Logic Operator)

논리 연산자는 두 피연산자 사이의 논리적인 관계를 정의하는 연산자이다

연산자내용
&&두 개의 논리값이 모두 참이면 참을 반환하고, 그렇지 않으면 거짓을 반환하는 연산자(AND 연산자)
||두 개의 논리값 중 하나가 참이면 참을 반환하고, 그렇지 않으면 거짓을 반환하는 연산자(OR 연산자)

7. 삼항 연산자(Ternary Operator)

삼항 연산자는 조건이 참일 경우 물음표(?)와 콜론(:) 사이의 값을 반환하고, 조건이 거짓일 경우 콜론(:)과 세미콜론(;) 사이의 값을 반환하는 연산자이다

조건식 ? 참일때값 : 거짓일때값;

8. 대입 연산자(Assignment Operator)

  • 대입 연산자는 변수에 값을 대입할 때 사용하는 연산자이다
  • 오른쪽에 있는 값을 이용해 왼쪽의 변수에 값을 대입한다
연산자내용
=왼쪽의 변수에 오른쪽의 값을 대입하는 연산자
+=왼쪽의 변수에 오른쪽의 값을 더한 후, 그 결과값을 왼쪽의 변수에 대입하는 연산자
-=왼쪽의 변수에 오른쪽의 값을 뺀 후, 그 결과값을 왼쪽의 변수에 대입하는 연산자
*=왼쪽의 변수에 오른쪽의 값을 곱한 후, 그 결과값을 왼쪽의 변수에 대입하는 연산자
/=왼쪽의 변수를 오른쪽의 값으로 나눈 후, 그 결과값을 왼쪽의 변수에 대입하는 연산자
%=왼쪽의 변수를 오른쪽의 값으로 나눈 후, 그 나머지를 왼쪽의 변수에 대입하는 연산자
,동시에 여러 개의 값을 대입하는 연산자(Swap 연산자)
파이썬에서만 제공하는 연산자

좋은 웹페이지 즐겨찾기