Taking baby-developer steps

4-1. 연산자 - 연산자와 피연산자/연산자의 종류 /이스케이프 시퀀스(=탈출 문자)/대입,산술,관계,논리,증감,삼항 연산자 본문

CS 지식/C언어_basic

4-1. 연산자 - 연산자와 피연산자/연산자의 종류 /이스케이프 시퀀스(=탈출 문자)/대입,산술,관계,논리,증감,삼항 연산자

Surin Lee 2021. 3. 18. 15:43

연산자와 피연산자

연산자(Operator)란 연산을 수행하는 기호를 의미한다. 피연산자(Operand)란 연산에 포함되는 변수나 상수를 의미한다.

즉, A+B 라는 수식에서, A와 B는 피연산자, +는 연산자에 해당한다.

 

연산자의 종류

C언어에는 다양한 연산자가 존재한다, 기본적인 연산자들은 C언어에서도 채택하고 있으며, 흔히 알고 있는 수학에서의 연산자와 일치하게 동작한다. 일부 연산자는 수학연산자와 조금 다르긴 하다. 대표적으로 대입 연산자가 수학에서의 연산과 상이하다.

 

대입 연산자

C언어에서 '=' 등호는 "대입"의 의미를 가진다. 등호를 이용해서 우변항을 좌변항에 넣을 수 있다. 자료형에 부합하는 값을 좌변항에 있는 변수에 넣는다.

 

사칙연산(산술연산자)

C언어에서는 기본적인 사칙 연산을 사용할 수 있다. 이때, 나누기는 몫만을 계산하므로, 나머지를 모듈로(Modular) 연산을 사용한다. 

 

이스케이프 시퀀스(Escape Sequence)

C언어에서 특정한 표현을 출력하기 위해 사용하는 문법이다. 탈출문자, 이스케이프 문자(Escape Character)라고도 한다.

 

\n : 줄바꾸기

\t :  수평 탭 넣기

\\ : 백슬래시 넣기

\" : 큰 따음표 널기

\b : 백 스페이스 넣기

 

관계연산자 

관계 연산자는 수학에서와 거의 동일하다. 한가지, "!=" 에서, 알아 둘것이 있는데, 컴퓨터는 "! "를 Not의 의미로 인식한다.

컴퓨터는 0을 거짓(False)으로 받아들이며, 그외의 숫자(ex> -1, -7, 1,000,000 , ...)를 참(Ture)으로 받아들인다.

컴퓨터가 거짓을 출력할 때는 0, 참을 출력할 때는 1을 출력한다.

-> 입력 시엔 0이아닌 모든 수를 참으로 받아들이고, 출력 시엔 거짓은 0, 참은 1로 출력한다.

 

논리 연산자

! : 부정

&& : 그리고

|| : 또는

 

!는 부정의 의미로 not과 같다. 변수 앞에 쓰게 되면 True면 False가,  False면 True가  출력된다.

&&는 and의 의미로, 수식과 수식 사이에 쓴다 [(수식)&&(수식)], 두 수식 모두 참일 때만 참이 된다.

||는 or의 의미로, 수실과 수식 사이에 쓰며 [(수식)||(수식)], 두 수식 모두 거짓일 때만 거짓이 된다.

 

코드를 다음과 같이,

printf("%d\n", a>b>c);

a>b>c 로 쓰게 되면, 컴퓨터는 앞에서 부터 차례대로 처리하므로, 'a>b' 부분에서 이미 1(참)이 출력되어, 결론적으로 1>C를 만족하는 지에 대한 참,거짓 값이 출력되어버린다. 따라서, b라는 변수가 a보다 작고 c보다는 큰지를 판단하려면,

printf("%d\n",(a>b)&&(b>c));

위와 같이 작성하여야 한다.

 

증감 연산자

특정 변수의 값을 1만큼 증감 시키는 연산자들이다.

#include <stdio.h>

int main(void){
	int a= 7;
    printf("%d\n", ++a);
    printf("%d\n", a++);
    printf("%d\n",++a);
	return 0;
}

위의 코드의 출력 값은 다음과 같다.

8
8
10

먼저 첫번째 printf()구문에서 a의 값을 1 증가 시킨 후에 반환 하였으므로, 8이 출력되고,

두번째 printf()구문에서 a의 값을 1증가 시킨 후 증가 되기 전의 값을 반환 하였으므로 이전 값과 같이 8이 출력된다.(두번 째 항이 끝날 때 a 값은 9이다.)

세번째 항에선 a의 값을 1증가 시킨 후에 반환하므로 여기선 10(9+1)이 출력된다.

 

삼항 연산자

세개의 항을 이용해서 조건문을 수행할 수 있는 연산자 이다. 즉, 조건을 파악해서 프로그램의 진행 경로를 바꿀 수 있는 연산자 이다.

printf("%d\n",(a==b ? 100 : -100));

위와 같이 3개의 항이 포함되어서, 삼항 연산자라고 불린다.

(수식1) ? (수식2) : (수식3)

위와 같은 형태로 작성되는데,

수식1이 참이면 수식2를 반환하고, 수식1이 거짓이면 수식3을 반환 한다.

 

즉 위의 코드에선 a와 b가 동일할 땐 100을, 동일하지 않을 땐 -100을 리턴 값으로 출력한다.

 

 

Comments