반응형
연산자 분류
※ 피연산자 개수에 따른 연산자 분류
단항 연산자 | 이항 연산자 | 삼항 연산자 |
-3 ++a b-- |
3+4 a/b c>d |
a>b?a:b |
※ 기능에 따른 연산자의 분류
- 산술 연산자
기본적인 사칙연산을 수행하는 연산자
산술 연산자의 종류 | 사용 예 | 의미 | 연산 결과 |
+ | 5+3 | 더하기 | 8 |
- | 5-3 | 빼기 | 2 |
* | 5*3 | 곱하기 | 15 |
/ | 5/3 | 나누기 | 1 |
% | 5%3 | 나머니 구하기 | 2 |
#include <stdio.h>
int main(void)
{
int a = 5, b = 3, c = 0;
c = a + b;
printf("%d + %d = %d\n", a ,b, c);
c = a - b;
printf("%d - %d = %d\n", a ,b, c);
c = a * b;
printf("%d * %d = %d\n", a ,b, c);
c = a / b;
printf("%d / %d = %d\n", a ,b, c);
c = a % b;
printf("%d %% %d = %d\n", a ,b, c);
return 0;
}
- 증감 연산자
변수의 값을 1만큼 증가/감소시키는 연산자
증감 연산자의 종류 | 사용 예 | 의미 |
전위형 | ++a | 1만큼 증가된 변수 a의 값 |
--a | 1만큼 감소된 변수 a의 값 | |
후위형 | a++ | 증가되기 전 변수a의 값 |
a-- | 감소되기 전 변수a의 값 |
#include <stdio.h>
int main(void)
{
int a = 10, b = 10;
printf("a++ : %d\n", a++);
printf("--b : %d\n", --b);
return 0;
}
#include <stdio.h>
int main(void)
{
int a = 10, b = 10;
printf("a++ : %d\n", a++);
printf("--b : %d\n", --b);
printf("a : %d\n", a);
printf("b : %d\n", b);
int c = 10, d = 10;
printf("++c : %d\n", ++c);
printf("d-- : %d\n", d--);
printf("c : %d\n", c);
printf("d : %d\n", d);
return 0;
}
- 관계 연산자
2개의 피연산자의 값을 비교하여 참 또는 거짓을 결과로 돌려주는 연산자
참이면 1로 return 거짓이면 0으로 return
관계 연산자의 종류 | 사용 예 | 의미 |
> | a > b | a가 b보다 크면 참 |
>= | a >= b | a가 b보다 크거나 같으면 참 |
< | a < b | a가 b보다 작으면 참 |
<= | a <= b | a가 b보다 작거나 같으면 참 |
== | a == b | a와 b가 같으면 참 |
!= | a != b | a와 b가 같지 않으면 참 |
#include <stdio.h>
int main(void)
{
int a = 5, b = 10;
printf("%d > %d : %d\n", a, b, a > b);
printf("%d != %d : %d\n", a, b, a != b);
return 0;
}
- 논리 연산자
피연산자의 값을 평가하여 참 또는 거짓을 돌려주는 연산자
논리 연산자의 종류 | 사용 예 | 의미 |
&& | a && b | a와b 모두 참인 경우만 참(AND) |
|| | a || b | a또는b가 하나라도 참인 경우는 참(OR) |
! | !a | a가 참인 경우에는 거짓, a가 거짓인 경우는 참 |
#include <stdio.h>
int main(void)
{
int score = 85;
printf("score >= 80 && score <= 100 ? %d\n", score >= 80 && score <= 100);
printf("score == 0 || score == 100 ? %d\n", score == 0 || score == 100);
return 0;
}
- 비트 연산자
※ 비트 논리 연산자의 종류와 기능
비트 논리 연산자의 종류 | 사용 예 | 의미 |
& | 5 & 7 | 101(5) 과 111(7)을 비트 단위로 AND 연산 |
| | 5 | 7 | 101(5) 과 111(7)을 비트 단위로 OR 연산 |
^ | 5 ^ 7 | 101(5) 과 111(7)을 비트 단위로 XOR 연산 |
※ X 와 Y에 대한 비트 단위 논리 연산의 결과
X | Y | X & Y | X | Y | X ^ Y |
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 0 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
- 비트 연산자
※ 비트 논리 연산자의 종류와 기능
※ 2값이 아닌 3값이 적여있다면 23을 곱한 효과
비트 시프트 연산자의 종류 | 사용 예 | 의미 |
<< | a << 2 | a의 값을 왼쪽으로 2비트 이동 (22를 곱한 효과) |
>> | a >> 2 | a의 값을 오른쪽으로 2비트 이동 (22를 나눈 효과) |
- 대입 연산자
※ 연산자의 좌변에 우변의 값을 저장하는 연산자
※ 좌변에는 반드시 변수만을 사용
※ 복합 대입 연산자
복합 대입 연산자의 종류 | 의미 | 복합 대입 연산자의 종류 | 의미 |
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 | a *= b | a = a * b |
a /= b | a = a / b | a <<= b | a = a << b |
a %= b | a = a % | a >>= b | a = a >> b |
복합 대입 연산자는 사용하도록 권고 되고 있지 않므으로 가독성이 좋은 a = a + b 형태로 작성
- 조건 연산자
※ 세 개의 피연산자
- 프로그램의 코드를 간략하게 만드는데 사용
- 사용 형식
조건 연산자 사용 형식 | 피연산자1 ? 피연산자2 : 피연산자3 |
조건 연산자는 피연산자1이 참이면 피연산자2가 연산의 결과가 되며, 피연산자1이 거짓이면 피연산자3이 연산의 결과
#include <stdio.h>
int main(void)
{
int a = 100, b = 200;
int max, min;
max = a > b ? a : b;
min = a < b ? a : b;
printf("max : %d, min : %d\n", max, min);
return 0;
}
- 연산자 우선순위
※ 일반적인 연산자 우선 순위
단항 > 산술 > 관계 > 논리 > 대입 > 콤마
- 연산자 결합방향
※ 우선 순위가 같은 연산자들이 함께 사용되거나 같은 연산자가 연속해서 사용되는 경우
→결합 방향에 의해 연산의 순서가 결정
반응형