C 언어(6) 연산자
연산자
C 언어에서 연산자란 프로그램의 산술식이나 연산식을
표현하고 처리하기 위해 제공되는 다양한 기호를 의미합니다.
산술 연산자
산술 연산자는 값을 계산하는 연산자이며, 변수들의 결합 방향은 왼쪽에서 오른쪽입니다.
산술 연산자의 종류
| 산술 연산자 | 설명 | 예시 |
|---|---|---|
| + | 왼쪽의 변수에서 오른쪽 변수를 더함. | 100 + 7 = 107 |
| - | 왼쪽의 변수에서 오른쪽의 변수를 뺌. | 100 - 7 = 93 |
| * | 왼쪽의변수에 오른쪽의 변수를 곱함. | 100 * 7 = 700 |
| / | 왼쪽의 변수를 오른쪽의 변수로 나눔. | 100 / 7 = 14 |
| % | 왼쪽의 변수를 오른쪽의 변수로 나눈 나머지를 반환함. | 100 % 7 = 2 |
+ 연산자
+ 연산자는 더한 값을 구하는 산술 연산자입니다. 변수의 값을 바꾸지 않습니다.
1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main()
{
int a = 15;
int b = 10;
printf("%d", a + b) // 25 출력;
printf("%d", a) // 15 출력;
printf("%d", b) // 10 출력;
}
- 연산자
- 연산자는 뺀 값을 구하는 산술 연산자입니다. 변수의 값을 바꾸지 않습니다.
1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main()
{
int a = 15;
int b = 10;
printf("%d", a - b) // 5 출력;
printf("%d", a) // 15 출력;
printf("%d", b) // 10 출력;
}
* 연산자
* 연산자는 곱한 값을 구하는 산술 연산자입니다. 변수의 값을 바꾸지 않습니다.
1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main()
{
int a = 15;
int b = 10;
printf("%d", a * b) // 150 출력;
printf("%d", a) // 15 출력;
printf("%d", b) // 10 출력;
}
/ 연산자
/ 연산자는 나눈 값을 구하는 산술 연산자입니다. 변수의 값을 바꾸지 않습니다.
1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main()
{
int a = 15;
int b = 10;
printf("%d", a / b) // 1 출력;
printf("%d", a) // 15 출력;
printf("%d", b) // 10 출력;
}
% 연산자
% 연산자는 나눈 값의 나머지를 구하는 산술 연산자입니다. 변수의 값을 바꾸지 않습니다.
1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main()
{
int a = 15;
int b = 10;
printf("%d", a % b) // 5 출력;
printf("%d", a) // 15 출력;
printf("%d", b) // 10 출력;
}
대입 연산자
대입 연산자는 변수에 값을 대입하는 연산자이며, 변수들의 결합 방향은 오른쪽에서 왼쪽입니다.
대입 연산자의 종류
| 대입 연산자 | 설명 | 예시 |
|---|---|---|
| = | 왼쪽의 변수를 오른쪽 변수로 대입. | A = B |
| += | 왼쪽의 변수에서 오른쪽 변수를 더한 값을 대입. | A = A - B |
| -= | 왼쪽의 변수에서 오른쪽 변수를 뺀 값을 대입. | A = A - B |
| *= | 왼쪽의변수에 오른쪽의 변수를 곱한 값을 대입. | A = A * B |
| /= | 왼쪽의 변수를 오른쪽의 변수로 나눈 값을 대입. | A = A / B |
| %= | 왼쪽의 변수를 오른쪽의 변수로 나눈 나머지를 대입. | A = A % B |
= 연산자
=연산자는 변수의 값을 설정하는 대입 연산자입니다.
1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main()
{
int a = 15;
int b = 10;
a = b;
printf("%d", a) // 10 출력;
printf("%d", b) // 10 출력;
}
+= 연산자
+= 연산자는 더한 값을 대입하는 대입 연산자입니다.
1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main()
{
int a = 15;
int b = 10;
printf("%d", a += b) // 25 출력;
printf("%d", a) // 25 출력;
printf("%d", b) // 10 출력;
}
a += b는a = a + b와 같습니다.
-= 연산자
-= 연산자는 뺀 값을 대입하는 대입 연산자입니다.
1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main()
{
int a = 15;
int b = 10;
printf("%d", a -= b) // 5 출력;
printf("%d", a) // 5 출력;
printf("%d", b) // 10 출력;
}
a -= b는a = a - b와 같습니다.
*= 연산자
*= 연산자는 곱한 값을 대입하는 대입 연산자입니다.
1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main()
{
int a = 15;
int b = 10;
printf("%d", a *= b) // 150 출력;
printf("%d", a) // 150 출력;
printf("%d", b) // 10 출력;
}
a *= b는a = a * b와 같습니다.
/= 연산자
/= 연산자는 나눈 값을 대입하는 대입 연산자입니다.
1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main()
{
int a = 15;
int b = 10;
printf("%d", a /= b) // 1 출력;
printf("%d", a) // 1 출력;
printf("%d", b) // 10 출력;
}
a /= b는a = a / b와 같습니다.
%= 연산자
%= 연산자는 나누기의 나머지로 대입하는 대입 연산자입니다.
1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main()
{
int a = 15;
int b = 10;
printf("%d", a %= b) // 5 출력;
printf("%d", a) // 5 출력;
printf("%d", b) // 10 출력;
}
a %= b는a = a % b와 같습니다.
증감 연산자
값을 1 씩 더하거나 빼기위해서 +=나 -= 연산자를 사용할 수도 있지만
C 언어에서는 더 간단하게 하기위해 ++, -- 연산자를 지원합니다.
++ 연산자는 변수의 값을 1 증가 시키기고
– 연산자는 변수의 값을 1 감소 시킵니다.
이 ++, – 연산자는 변수 앞에 있느냐 뒤에 있느냐에 따라 작동방식이 다릅니다.
증감 연산자가 변수보다 앞에 있으면 전위 증감 연산자, 뒤에 있으면 후위 증감 연산자라 합니다.
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
int main()
{
int value = 10;
++value; // 전위 증감 연산자
value++; // 후위 증감 연산자
--value; // 전위 증감 연산자
value--; // 후위 증감 연산자
}
증감 연산자의 종류
| 증감 연산자 | 설명 | 예시 |
|---|---|---|
| 전위 증가 연산자 | 변수의 값을 1 증가 시키고 증가한 값을 반환. | ++변수 |
| 후위 증가 연산자 | 변수의 값을 1 증가 시키고 증가하기 전 값을 반환. | 변수++ |
| 전위 감소 연산자 | 변수의 값을 1 감소 시키고 감소한 값을 반환. | –변수 |
| 후위 감소 연산자 | 변수의 값을 1 감소 시키고 감소하기 전 값을 반환. | 변수– |
전위 증감 연산자
아래 예시처럼 전위 증감 연산자 값을 계산하고 계산한 결과를 출력합니다.
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
int main()
{
int value = 10;
printf("%d", ++value); // 11 출력
printf("%d", value); // 11 출력
printf("%d", --value); // 10 출력
printf("%d", value); // 10출력
}
전위 증감 연산자의 작동 방식은 아래 예시와 같습니다.
1
2
3
4
5
6
7
#include <stdio.h>
int Sum(int value)
{
value += 1;
return value;
}
후위 증감 연산자
아래 예시처럼 전위 증감 연산자 값을 계산하고 계산하기 전 값을 출력합니다.
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
int main()
{
int value = 10;
printf("%d", value++); // 10 출력
printf("%d", value); // 11 출력
printf("%d", --value); // 11 출력
printf("%d", value); // 10출력
}
후위 증감 연산자의 작동 방식은 아래 예시와 같습니다.
1
2
3
4
5
6
7
8
#include <stdio.h>
int Sum(int value)
{
int beforeSum = value;
value += 1;
return beforeSum;
}
비교 연산자
비교 연산자는 변수 사이의 상대적인 크기를 판단하는 연산자입니다.
비교 연산자의 종류
| 비교 연산자 | 설명 | 예시 |
|---|---|---|
| == | 두 변수의 값이 같은지. | A == B |
| != | 두 변수의 값이 다른지. | A != B |
| > | 왼쪽 변수가 오른쪽 변수보다 큰지. | A > B |
| >= | 왼쪽 변수가 오른쪽 변수보다 크거나 같은지. | A >= B |
| < | 왼쪽 변수가 오른쪽 변수보다 작은지. | A < B |
| <= | 왼쪽 변수가 오른쪽 변수보다 작거나 같은지. | A <= B |
== 연산자
== 연산자는 두 변수의 값이 같은지를 구하는 비교 연산자입니다.
1
2
3
4
5
6
7
8
#include<stdio.h>
int main()
{
printf("%d", 10 == 15); // 0(false) 출력
printf("\n");
printf("%d", 10 == 10); // 1(true) 출력
}
!= 연산자
!= 연산자는 두 변수의 값이 다른지를 구하는 비교 연산자입니다.
1
2
3
4
5
6
7
8
#include<stdio.h>
int main()
{
printf("%d", 10 != 15); // 1(true) 출력
printf("\n");
printf("%d", 10 != 10); // 0(false) 출력
}
> 연산자
> 연산자는 왼쪽 변수가 오른쪽 변수보다 큰지를 구하는 비교 연산자입니다.
1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main()
{
printf("%d", 10 > 15); // 0(false)) 출력
printf("\n");
printf("%d", 10 > 10); // 0(false) 출력
printf("\n");
printf("%d", 15 > 10); // 1(true) 출력
}
>= 연산자
>= 연산자는 왼쪽 변수가 오른쪽 변수보다 크거나 같은지를 구하는 비교 연산자입니다.
1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main()
{
printf("%d", 10 >= 15); // 0(false)) 출력
printf("\n");
printf("%d", 10 >= 10); // 1(true) 출력
printf("\n");
printf("%d", 15 >= 10); // 1(true) 출력
}
< 연산자
< 연산자는 왼쪽 변수가 오른쪽 변수보다 작은지를 구하는 비교 연산자입니다.
1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main()
{
printf("%d", 10 < 15); // 1(true)) 출력
printf("\n");
printf("%d", 10 < 10); // 0(false) 출력
printf("\n");
printf("%d", 15 < 10); // 0(false) 출력
}
<= 연산자
<= 연산자는 왼쪽 변수가 오른쪽 변수보다 작거나 같은지를 구하는 비교 연산자입니다.
1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main()
{
printf("%d", 10 <= 15); // 1(true)) 출력
printf("\n");
printf("%d", 10 <=10); // 1(true) 출력
printf("\n");
printf("%d", 15 <= 10); // 0(false) 출력
}
논리 연산자
논리 연산자는 주어진 논리식을 판단하여, 참(true)과 거짓(false)을 결정하는 연산자입니다.
논리 연산자의 종류
| 논리 연산자 | 설명 | 예시 |
|---|---|---|
| && | 논리식이 모두 참이면 true 반환. (AND) | A && B |
| || | 논리식이 하나라도 참이면 true 반환. (OR) | A || B |
| ! | 논리식이 true면 false, false면 true 반환. (NOT) | !A |
&& (AND) 연산자
&& 연산자는 두 논리식이 모두 참인지를 구하는 논리 연산자입니다.
1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main()
{
printf("%d", 1 && 1); // 1(true) 출력
printf("\n");
printf("%d", 1 && 0); // 0(false) 출력
printf("\n");
printf("%d", 0 && 0); // 0(false) 출력
}
|| (OR) 연산자
|| 연산자는 두 논리식이 하나라도 참인지를 구하는 논리 연산자입니다.
1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main()
{
printf("%d", 1 || 1); // 1(true) 출력
printf("\n");
printf("%d", 1 || 0); // 1(true) 출력
printf("\n");
printf("%d", 0 || 0); // 0(false) 출력
}
! (NOT) 연산자
! 연산자는 논리식이 참이면 거짓, 거짓이면 참을 반환하는 논리 연산자입니다.
1
2
3
4
5
6
7
8
#include<stdio.h>
int main()
{
printf("%d", !1); // 0(false) 출력
printf("\n");
printf("%d", !0); // 1(true) 출력
}
비트 연산자
비트 연산자는 비트 단위로 논리 연산을 할 때 사용하는 연산자입니다.
C 언어에서
이진수를 선언하는 방법은 0b10101010 처럼비트 앞에 0b를 붙여야합니다.
& (AND) 연산자
& 연산자는 대응되는 두 비트가 모두 1 이라면 해당 1을 아니라면 0을 반환합니다.
1
2
3
4
5
6
7
8
#include<stdio.h>
int main()
{
char result1 = 0b11111111 & 0b00001111; // result1 = 00001111
char result2 = 0b01010101 & 0b10101010; // result2 = 00000000
char result3 = 0b11001100 & 0b10011001; // result3 = 10011000
}
&연산자는&&연산자와 다릅니다.
| (OR) 연산자
연산자는 대응되는 두 비트 중 하나라도 1 이라면 1을 아니라면 0을 반환합니다. |
1
2
3
4
5
6
7
8
#include<stdio.h>
int main()
{
char result1 = 0b11111111 | 0b00001111; // result1 = 11111111
char result2 = 0b01010101 | 0b10101010; // result2 = 0b11111111
char result3 = 0b11001100 | 0b10011001; // result3 = 0b10011001
}
|연산자는||연산자와 다릅니다.
^ (XOR) 연산자
^ 연산자는 대응되는 두 비트가 서로 다르다면이라면 1을 아니라면 0을 반환합니다.
1
2
3
4
5
6
7
8
#include<stdio.h>
int main()
{
char result1 = 0b11111111 ^ 0b00001111; // result1 = 11110000
char result2 = 0b01010101 ^ 0b10101010; // result2 = 11111111
char result3 = 0b11001100 ^ 0b10011001; // result3 = 01000001
}
~ (NOT) 연산자
~ 연산자는 해당 비트가 1이라면 0을 아니라면 1을 반환합니다.
1
2
3
4
5
6
7
8
#include<stdio.h>
int main()
{
char result1 = ~0b11111111; // result1 = 00000000
char result2 = ~0b01010101; // result2 = 10101010
char result3 = ~0b11001100; // result3 = 00110011
}
<< (쉬프트) 연산자
<< 연산자는 비트를 왼쪽으로 이동 시킵니다.
1
2
3
4
5
6
7
8
#include<stdio.h>
int main()
{
char result1 = 0b11111111 << 4; // result1 = 11110000
char result2 = 0b01010101 << 1; // result2 = 10101010
char result3 = 0b11001100 << 8; // result3 = 00000000
}
>> (쉬프트) 연산자
>> 연산자는 비트를 오른쪽으로 이동 시킵니다.
1
2
3
4
5
6
7
8
#include<stdio.h>
int main()
{
char result1 = 0b11111111 >> 4; // result1 = 00001111
char result2 = 0b01010101 >> 1; // result2 = 00101010
char result3 = 0b11001100 >> 8; // result3 = 00000000
}
삼항 연산자
삼항 연산자는 아래 예시와 같이 물음표(?) 앞의 조건식에 따라 결괏값이 참이면 반환값1 을 반환하고,
결괏값이 거짓이면 반환값2를 반환합니다.
조건식 ? 반환값1 : 반환값2
1
2
3
4
5
6
7
#include<stdio.h>
int main()
{
printf("%d\n", 100 > 50 ? 20 : 10); // 조건식 결과가 true여서 20 반환
printf("%d\n", 100 == 50 ? 20 : 10); // 조건식 결과가 false여서 10 반환
}