연산자 | 연산자의 기능 |
---|---|
+ | 왼쪽의 피연산자에 오른쪽의 피연산자를 더합니다. |
- | 왼쪽의 피연산자에서 오른쪽의 피연산자를 뺍니다. |
* | 왼쪽의 피연산자에 오른쪽의 피연산자를 곱합니다. |
/ | 왼쪽의 피연산자를 오른쪽의 피연산자로 나눕니다. |
% | 왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 얻게 되는 나머지를 반환합니다. |
연산자 | 연산자의 기능 | 복합대입 연산식 | 동일한 연산식 |
---|---|---|---|
= | 왼쪽의 피연산자에 오른쪽의 피연산자를 대입합니다. | ||
+= | 왼쪽의 피연산자에 오른쪽의 피연산자를 더한 후, 그 결괏값을 왼쪽의 피연산자에 대입합니다. | 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언어 가이드 포인터 바로가기