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 반환
}