Skip to Main Content

C언어 기초 가이드 STEP 1: 연산자

코딩 학습 가이드는 소프트웨어학과 송오영교수님이 검수하였습니다.

연산자

연산자 연산자의 기능
+ 왼쪽의 피연산자에 오른쪽의 피연산자를 더합니다.
- 왼쪽의 피연산자에서 오른쪽의 피연산자를 뺍니다.
* 왼쪽의 피연산자에 오른쪽의 피연산자를 곱합니다.
/ 왼쪽의 피연산자를 오른쪽의 피연산자로 나눕니다.
% 왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 얻게 되는 나머지를 반환합니다.
연산자 연산자의 기능 복합대입 연산식 동일한 연산식
= 왼쪽의 피연산자에 오른쪽의 피연산자를 대입합니다.    
+= 왼쪽의 피연산자에 오른쪽의 피연산자를 더한 후, 그 결괏값을 왼쪽의 피연산자에 대입합니다. a += b a = a + b
-= 왼쪽의 피연산자에서 오른쪽의 피연산자를 뺀 후, 그 결괏값을 왼쪽의 피연산자에 대입합니다. a -= b a = a - b
*= 왼쪽의 피연산자에 오른쪽의 피연산자를 곱한 후, 그 결괏값을 왼쪽의 피연산자에 대입합니다. a *= b a = a * b
/= 왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 결괏값을 왼쪽의 피연산자에 대입합니다. a /= b a = a / b
%= 왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 나머지를 왼쪽의 피연산자에 대입합니다. a %= b a = a % b

 연산자와 피연산자 사이에 공백을 삽입하지 않는 경우 부호 연산자와 복합 대입 연산자를 혼동하는 경우가 있습니다.
       num1=-num2;    // num1 = -(마이너스)num2;
       num1-=num2;    // num1 = (num1 - num2);

연산자 연산자의 기능
++x 값을 1 증가 후, 속한 문장의 나머지를 진행합니다.
x++ 속한 문장을 먼저 진행한 후, 값을 1 증가합니다.
--x 값을 1 감소 후, 속한 문장의 나머지를 진행합니다.
x-- 속한 문장을 먼저 진행한 후, 값을 1 감소합니다.
연산자 연산자의 기능
< 왼쪽의 피연산자가 오른쪽의 피연산자보다 작으면 1을 반환합니다.
> 왼쪽의 피연산자가 오른쪽의 피연산자보다 크면 1을 반환합니다.
== 왼쪽의 피연산자와 오른쪽의 피연산자가 같으면 1을 반환합니다.
!= 왼쪽의 피연산자와 오른쪽의 피연산자가 같지 않으면 1을 반환합니다.
<= 왼쪽의 피연산자가 오른쪽의 피연산자보다 작거나 같으면 1을 반환합니다.
>= 왼쪽의 피연산자가 오른쪽의 피연산자보다 크거나 같으면 1을 반환합니다.

관계 연산자들은 조건을 만족하면 1(참)을, 만족하지 않으면 0(거짓)을 반환합니다.
C언어는 0이 아닌 모든 값을 참으로 간주합니다. 다만, 1이 참을 의미하는 대표적인 값입니다.

연산자 연산자의 기능
&& 논리식이 모두 참이면 1을 반환합니다.
|| 논리식 중에서 하나라도 참이면 1을 반환합니다.
! 논리식의 결과가 참이면 0을, 거짓이면 1을 반환합니다.

논리 연산자는 주어진 논리식을 판단하여, 참과 거짓을 결정하는 연산자입니다.
C언어는 0이 아닌 모든 값을 참으로 간주합니다. 다만, 1이 참을 의미하는 대표적인 값입니다.

비트 연산자

연산자 연산자의 기능
& 대응되는 비트가 모두 1이면 1을 반환합니다. (비트 AND 연산)
예) 00001111 & 00010101 -> 00000101
| 대응되는 비트 중에서 하나라도 1이면 1을 반환합니다. (비트 OR 연산)
예) 00001111 | 00010101 -> 00011111
^ 대응되는 비트가 서로 다르면 1을 반환함. (비트 XOR 연산)
예) 00001111 ^ 00010101 -> 00011010
~ 비트를 1이면 0으로, 0이면 1로 반전시킵니다. (비트 NOT 연산)
예) ~00001111 -> 11110000
<< 비트 열을 왼쪽으로 이동시킵니다. (left shift 연산)
이동으로 인해서 생기는 오른쪽 빈칸은 0으로 채워지고, 이동으로 인해서 밀려나는 왼쪽 비트들은 소멸됩니다.
예) 00001111<<2 -> 00111100
>> 비트 열을 오른쪽으로 이동시킵니다. (right shift 연산)
이동으로 인해서 밀려나는 오른쪽의 비트들은 소멸되고, 이동으로 인해서 생긴 왼쪽의 빈 자리는 0으로 채워집니다.
예) 00001111>>2 -> 00000011

기타 연산자

형 변환 연산자는 피연산자의 값을 원하는 형태로 바꿔줍니다.

(자료형)피연산자
정수를 실수로 바꾸는 경우 실수를 정수로 바꾸는 경우
(double)2 -> 2.0 (int)3.14 -> 3

삼항 연산자는 다른 언어에는 존재하지 않는 C언어만의 독특한 연산자입니다. 이 연산자는 피연산자의 수가 3개여서 삼항연산자로 불립니다.

조건식 ? 반환값1 : 반환값2

조건식이 참이면 연산결과로 반환값1이 반환되고, 조건이 거짓이면 연산결과로 반환값2가 반환됩니다.
삼항 연산자는 if~else문을 대체할 수 있으며, 코드를 간결하게 작성할 수 있도록 합니다. if~else문에 대한 더 자세한 내용은 조건문 탭에서 확인할 수 있습니다.

콤마( , ) 연산자는 연산자가 아닌 것처럼 보이지만 연산자입니다. 다른 연산자와는 달리, 연산의 결과가 아닌 구분을 목적으로 주로 사용됩니다.
이 연산자는 다음과 같은 상황에서 사용됩니다.

  - 둘 이상의 변수를 동시에 선언할 때
  - 둘 이상의 문장을 한 행에 삽입할 때
  - 둘 이상의 인자를 함수로 전달할 때

사용자의 컴퓨터 환경에 따라, 컴파일러의 자료형 별 바이트 크기가 다를 수 있습니다.
sizeof 연산자는 단항 연산자로 피연산자의 크기를 바이트 단위로 반환합니다. sizeof 연산자에 변수나 상수가 피연산자로 전달되면, 해당 변수나 상수에 해당하는 타입의 크기를 반환해 줍니다.

sizeof 연산자는 다음과 같은 형식으로 사용합니다.
  - sizeof 표현식
  - sizeof(자료형)
  - sizeof(표현식)

C언어에서 포인터와 연관되어 사용되는 연산자는 다음과 같습니다.

  - 주소 연산자(&)
  - 참조 연산자(*)

주소 연산자(&)는 변수의 이름 앞에 사용하여, 해당 변수의 주소값을 반환합니다.
참조 연산자(*)는 포인터의 이름이나 주소 앞에 사용하여, 포인터에 가리키는 주소에 저장된 값을 반환합니다.
포인터 연산자에 대한 더 자세한 내용은 포인터 탭에서 확인할 수 있습니다. C언어 가이드 포인터 바로가기