연산자 | 연산자의 기능 |
= | 연산자 오른쪽의 값을 왼쪽에 있는 변수에 대입한다. num = 20; |
+ | 두 피연산자의 값을 더한다. num = 4+3; |
- | 왼쪽의 피연산자 값에서 오른쪽의 피연산자 값을 뺀다. num = 20 - 10; |
* | 두 피연산자의 값을 곱한다. num = 4 * 2; |
/ | 왼쪽의 피연산자 값을 오른쪽의 피연산자 값으로 나눈다. num = 8 / 4; |
% | 왼쪽의 피연산자 값을 오른쪽의 피연산자 값으로 나눴을 때 얻게되는 나머지 값을 반환한다. num = 5 % 2 |
복합 대입 연산자
다른 연산자와 합쳐진 형태의 대입연산자를 복합 대입 연산자라 한다.
#include <stdio.h>
int main(void){
int num1 = 2, num2 = 4, num3 = 6;
num1 += 3; // num1 = num1 + 3;
num2 *= 4; // num2 = num2 * 4;
num3 %= 5; // num3 = num3 % 5;
printf("Result : %d, %d, %d \n",num1, num2, num3);
return 0;
}
// output : Result : 5, 16, 1
위 코드처럼 num1의 연산 결과를 다시 num1에 저장하는 연산식 같은 경우는 복합 대입 연산자를 이용하면 더 간략하게 표현할 수 있다.
+연산자와 -연산자는 정수 표현에서 음의 정수와 양의 정수를 표현하기 위해 사용되기도 한다.
증가, 감소 연산자
변수명이 num이라 할 때 num++는 후위증가, ++num은 전위증가 라고 한다.
#include <stdio.h>
int main(void){
int num1 = 12, num2 = 12;
printf("num1 : %d \n", num1);
printf("num1++ : %d \n", num1++); // 후위증가
printf("num1 : %d \n", num1);
printf("num2 : %d \n", num2);
printf("++num2 : %d \n", ++num2); // 전위증가
printf("num2 : %d \n", num2);
return 0;
}
/*
output:
num1 : 12
num1++ : 12
num1 : 13
num2 : 12
++num2 : 13
num2 : 13
*/
후위증가의 경우에는 printf()함수가 먼저 실행되고 연산이 진행된다. 또한 전위증가의 경우에는 연산이 먼저 진행되고, printf() 함수가 실행된다. 이와 같은 방식은 -- 연산자로도 사용이 가능하다.
#include <stdio.h>
int main(void){
int num1 = 10;
int num2 = (num1--)+2;
printf("num1 : %d, num2 : %d\n", num1, num2);
return 0;
}
// output : num1 : 9, num2 : 12
위 코드의 num2 변수에서도 num1--는 후위감소이기 때문에 먼저 num1 + 2 의 연산을 진행하고 후에 num1이 1 감소되었다. 후위 증가 및 후위 감소의 연산에서는 소괄호의 영향을 받지 않고, 다음 문장으로 넘어가야 값의 증가 및 감소가 이루어진다.
관계연산자
관계연산자는 값의 대소나 동등의 관계를 따지는 연산자이다. 관계 연산자는 비교 연산자 라고도 한다.
연산자 | 연산자의 기능 |
< | a < b a가 b 보다 작은가? |
> | a > b a가 b보다 큰가? |
== | a == b a와 b가 같은가? |
!= | a != b a와 b가 다른가? |
<= | a <= b a가 b보다 작거나 같은가? |
>= | a >= b a가 b보다 크거나 같은가? |
관계연산자들은 조건을 만족하면 1을, 만족하지 않으면 0을 반환한다. 1은 참(true)을 의미하고, 0은 거짓(false)을 의미한다.
#include <stdio.h>
int main(void){
int num1 = 10, num2 = 12;
int res1, res2, res3;
res1 = (num1 == num2);
res2 = (num1 <= num2);
res3 = (num1 > num2);
printf("res1 : %d\n", res1);
printf("res2 : %d\n", res2);
printf("res3 : %d\n", res3);
return 0;
}
/*
output :
res1 : 0
res2 : 1
res3 : 0
*/
논리연산자
AND(논리곱), OR(논리합), NOT(논리부정)을 표현하는 연산자이다.
연산자 | 연산자의 기능 |
&& | A && B A와 B가 모두 참이면 참을 반환한다.(논리 AND) |
|| | A || B A와 B 둘 중 하나라도 참이면 참을 반환한다.(논리 OR) |
! | !A A가 참이면 거짓, 거짓이면 참을 반환한다.(논리 NOT) |
논리 연산자 보다 관계 연산자가 먼저 수행된다. result = (1 < 10) && (2 == 2)의 경우에는 두 식이 모두 참이기 때문에 result 값은 1이된다. 또한 C는 0이 아닌 값은 모두 참으로 간주하기 때문에 result = !10 과 같은 경우 참(10)을 부정했기 때문에 result 값은 0이된다.
'Language > C, C++' 카테고리의 다른 글
[C] 키워드 (0) | 2020.11.21 |
---|---|
[C] scanf() (0) | 2020.11.21 |
[C] 변수 (0) | 2020.11.18 |
[C] printf() (0) | 2020.11.18 |
[C] 주석 (0) | 2020.11.17 |