본문 바로가기
카테고리 없음

연산자는 C언어에서 각종 연산을 수행하게 해준다

by 컴싸과 신생아 허봉명 2022. 6. 10.

연산자 중 대입, 산술, 관계, 논리에 대해 정리한다.

연산자(Operator)란 임의의 자료에 대해 각종 계산을 수행하게 하는 기호를 말하는데, 더하고 빼고 곱하고 나누는 동작을 하는 것들이 바로 이것이며 실생활에도 자주 사용하고 있는 것들이다. 연산자는 단순히 값을 계산하는 역할만 하는 것이 아니라 값과 값을 비교하거나 참, 거짓을 판단하고 참과 참 또는 참과 거짓으로 구성된 문장을 일정한 기준으로 연결하기도 한다. 이에 대해 공부해 보자.

1. 대입 연산자(Assignment Operator)

대입(Assignment)이란 변수에 어떤 값을 집어넣는 동작이다. Assignment Operator는 '='을 사용하여 구성되며, 이것은 우변에 위치한 상수 값 또는 다른 변수 값을 좌변에 대입하여 값을 변경할 때 사용한다. 우변이 상수일 경우는 계산하지 않고 상수를 바로 좌변에 대입하며, 우변이 수식일 경우는 이 수식을 계산한 결과가 좌변으로 대입된다.

2. 산술 연산자(Arithmetic Operator)

Arithmetic Operator는 상수 또는 변수의 값을 이용하여 각종 Arithmetic Operation(덧셈, 뺄셈, 곱셈, 나눗셈, 등)을 수행하는 수식으로 Binary Operator와 Unary Operator로 구분할 수 있다.

1. Arithmetic Operator 중 이항 연산자(Binary Operator)

Binary Operator는 2개의 자료를 대상으로 산술적인 처리를 수행하는 수식이다. +, -, *, / 는 덧셈, 뺄셈, 곱셈, 나눗셈의 Arithmetic Operation을 수행하는 수식이며, % 는 나눗셈의 나머지 값을 이용하는 나머지 연산자(Modulo Operator)이다. 곱하기는 보통 기호를 사용하지만 알파벳 X와 모양이 동일해서 프로그래밍 언어에서는 *를 대신 사용한다. 그리고 나누기는 보통 기호를 사용하는데 이 문자가 키보드에 없기 때문에 / 기호를 사용하여 분수 형태로 사용한다. 또한 나눗셈의 경우 결과 값이 몫과 나머지로 나오기 때문에 몫은 / 기호를 이용해서 구하고 나머지는 % 기호를 사용해서 구한다. 주의할 점으로 / 는 피연산자(Operand)의 타입에 따라 계산의 결과가 달라지는 특징이 있다. Operand가 모두 정수면 결과도 정수형이 되고 실수형이 있으면 결과도 실수형이 된다. 또한 % 는 정수형 자료에만 사용할 수 있고, 실수형 자료에는 사용할 수 없다.

2. Arithmetic Operator 중 단항 연산자(Unary Operator)

Unary Operator는 1개의 자료만을 대상으로 산술적인 처리를 수행하는 수식이다. 컴퓨터에서는 값이 순차적으로 증가하거나 감소하는 경우가 많다. 예를 들어 루프의 제어 변수처럼 순서대로 어떤 작업을 할 때는 변숫값을 하나씩 증감시키는 경우가 많기 때문에 별도로 만들어져 있다. Unary Operator 중 ++, -- 를 증감 Operator라고도 하며, 각각 Operand의 값을 1 증가시키거나 1 감소시키는 기능을 수행한다. 이러한 계산은 모두 정수형 변수에만 사용되어야 하며, 특히 ++, -- 는 사용 위치에 따라 그 기능이 달라질 수 있음에 주의해야 한다.

3. 관계 연산자(Relational Operator)

Relational Operator는 Operand를 두 개 취하는 Binary Operator이며 대소 관계를 비교한 다음 좌변과 우변을 비교하여 같은지, 다른지, 다르다면 어느 쪽이 더 큰지를 조사한다.

연산자 조건
== 좌변과 우변이 같다.
!= 좌변과 우변이 다르다.

 

== Operator의 의미는 같다. != Operator의 의미는 다르다 인데, 이 둘은 별도로 상등 연산자(Equality Operator)로 분류한다. 동작과 사용방법이 비슷하기 때문에 같이 다루기는 하지만 Relational Operator와 Equality Operator는 계산 순위가 다르므로 구분할 필요가 있다. Relational Operator를 사용하는데 특별한 주의 사항은 없으며 수학에서 사용하던 대로 사용하면 된다. 다만 좌변과 우변의 데이터 타입이 일치해야 한다는 점을 주의해야 한다. 일치하지 않더라도 산술 변환 규칙이 적용되기 때문에 대부분의 경우 별 문제가 없지만 만약 문제가 있다면 캐스트 Operator로 양변의 타입을 일치시킨 후 비교해야 한다.

 

산술 연산(Arithmetic Operation)의 결과 값은 숫자로 나오지만, 관계 연산(Relational Operation)이나 논리 연산(Logical Operation)의 결과 값은 진리 값(참, 거짓)으로 나온다. 따라서 조건 검정을 위해 주로 사용된다. 예를 들어 '1과 2는 같다'라는 문장은 Relational Operation이 사용된 것이고 실제로 1과 2는 같지 않기 때문에 이 문장에 대한 결과 값은 거짓이 된다. 그런데 컴퓨터가 계산의 결과 값을 '참', '거짓'과 같은 문자열로 저장한다면 계산 속도가 떨어질 것이다. 따라서 Relational Operation의 결과 값은 참이면 1, 거짓이면 0으로 처리된다.

4. 논리 연산자(Logical Operator)

Logical Operator는 Operand에 대해 Logical Operation(AND, OR, NOT)을 수행하는 Operator이며, 계산 결과는 참과 거짓으로 나타난다. Logical Operation에서 값이 0인 경우 거짓이고 0이 아닌 값은 참이 된다.

1. Logical Operator 중 ! 기호

! 기호의 의미는 논리 부정(NOT)이며, 조건식 하나를 Operand로 취하는 Unary Operator로서 조건식을 반대로 바꾼다. 즉 조건문의 평가 결과가 참이면 거짓으로 바꾸고 거짓이면 참으로 바꾼다.

2. Logical Operator 중 || 기호

|| 기호의 의미는 논리합(OR)이며, OR이라는 말처럼 양쪽 조건 중 어느 하나라도 참이면 전체식은 참이 되며 둘 다 거짓일 때만 전체식도 거짓이 된다. 두 가지 조건 중 하나라도 만족할 때 어떤 동작을 하고 싶다면 두 조건문을 이 기호로 묶어 준다.