JollyTree의 C언어 기초코딩: 예제로 간단 정리 - 3. 연산자(Operator)
안녕하세요 JollyTree(•̀ᴗ•́)و입니다.
C언어는 수식을 작성할 때 +, -, *, / 등의 다양한 연산자를 제공하며 수식은 연산자와 피연산자로 구성됩니다.
int a; // 정수형 변수 a 선언
a = 10 + 20; // 10+10의 결과를 변수 a에 저장, 이 때 '+'를 연산자라고 하며, 10, 20은 피연산자라고 합니다.
다음은 C언어에서 자주 사용되는 연산자들입니다.
분류 | 연산자 | 설명 | 예시 |
대입 | = | 오른쪽의 값을 왼쪽에 대입 | a = 10; |
산술 | + - * / % | 사칙연산, %는 나머지 연산 | a + b, a % b |
부호 | + - | 덧셈, 뺄셈 부호 | a = -10, a = -b |
증감 | ++ -- | 증가, 감소 연산 | a++, a--, ++a, --a |
관계 | > < == != >= <= | 왼쪽과 오른쪽을 비교 | a > b, a !=b, a<=b, a==b |
논리 | && || ! | AND, OR | a && b, a || b |
조건 | ? | 조건에 따라 선택(삼항 연산자라고도 함) | a > b ? a = 3: a = 10 |
비트 연산 | & | ^ ~ << >> | 비트별 AND, OR, XOR, 이동, 반전 | a & b, a | b, a >> b |
포인터 연산자 | * & [] | 주소계산, 포인터의 추출 | &a, *b |
구조체 연산자 | . -> | 구조체 멤버 참조 | a.b, a->b |
= 연산자는 같다는 의미가 아니고 대입을 의미합니다. 그리고 자주 사용되는 관계 연산자도 수학적 표현과 조금 다른 부분이 있습니다. 각 관계 연산자들은 아래와 같은 의미를 가집니다.
a > b; // a가 b 보다 큰가 ?
a < b; // a가 b 보다 작은가 ?
a == b; //a와 b가 같은가 ?
a != b; //a와 b가 다른가 ?
a >= b; //a가 b보다 크거나 같은가 ?
a <= b; //a가 b보다 작거나 같은가 ?
논리 연산자 여러 개의 조건을 조합하여 참과 거짓을 따지는 연산자로 수식이 a && b 인경우 a, b 모두가 참인 경우에 참이되고, 그렇지 않으면 거짓이 됩니다. a || b 인 경우이면 a, b 중 한개만 참이면 참이고, a, b가 모두 거짓이면 결과가 거짓이 됩니다. !는 반대로 a가 참이면 거짓, a가 거짓이면 참이 됩니다. 아래 표를 참고해 주세요.
a | b | a&&b | a||b | !a |
0 | 0 | 0 | 0 | 1 |
0 | 1 | 0 | 1 | 1 |
1 | 0 | 0 | 1 | 0 |
1 | 1 | 1 | 1 | 0 |
위 표에서는 편의를 위해 숫자 '1'을 사용했지만, C언어에서는 0이 아닌 수 즉, 2나 3 등 도 참으로 취급하기 때문에 결과는 동일합니다.
수식과 연산자들은 C언어로 코딩을 하는 동안 아주 많이 사용되어 자주 볼수 있기 때문에 간단한 예제로 정리하였습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
#include <stdio.h>
int main(void)
{
int a, b, c, d;
a = 10;
b = 20;
c = 30;
d = 45;
a = b + c * d;
printf(">> a의 결과 값: %d\n", a);
printf(">> d %% a의 결과 값: %d\n", d % a);
a++;
b--;
printf(">> a++ 결과 값 : %d\n", a);
printf(">> b-- 결과 값 : %d\n", b);
if (b >= 10)
printf(">> b는 10보다 크거나 같습니다.\n");
else
printf(">> b는 10보다 작습니다.\n");
if (b == c) else if ((c > 10) && (d > 10))
printf(">> c와 d 모두가 10보다 커서 모두가 참(True)입니다.\n");
else
printf(">> c와 d 중 10보다 작은 값이 있어 거짓(False)입니다.\n");
b > a ? printf(">> b가 a보다 큽니다. 참!\n") : printf(">> b가 a보다 크지 않습니다. 거짓!\n");
d = -a;
printf(">> d의 결과 값 : %d\n", d);
return 0;
}
|
cs |
실행결과(Output):
예제에는 담지 않았지만, 서로 다른 자료형 간의 수식 사용은 자동으로 자료형이 변환(Type Cast)됩니다. 예를 들어 아래와 같이 float(실수) 형 변수 a에 피연산자로 정수를 사용했을 경우 a에는 자동으로 30.000 형태의 실수가 저장됩니다.
float a;
a = 10 + 20; //a에는 30.0000 형태의 값이 저장
반대로, 정수형 변수 a에 실수를 대입하면 a에는 15만 저장되고 소수점 이하는 사라지게 됩니다.
int a;
a = 15.987; //a에는 15만 저장
또한 프로그래머가 아래와 같이 강제로 형변환을 할 수도 있습니다.
int a;
double b;
b = (double)a;
b = (double)20;
조금이라도 도움이 되셨길 바라며 이상 JollyTree였습니다(•̀ᴗ•́)و
'Coding & Programming > C언어 기초(A-Z)' 카테고리의 다른 글
[C언어 기초코딩: 예제로 간단 정리] 5. 반복문(Loops) - 예제 추가 (0) | 2021.03.10 |
---|---|
[C언어 기초코딩: 예제로 간단 정리] 5. 반복문(Loops) (0) | 2021.03.09 |
[C언어 기초코딩: 예제로 간단 정리] 4. 조건문(Conditions) : if, if else, switch, break, continue, goto (0) | 2021.03.08 |
[C언어 기초코딩: 예제로 간단 정리] 2. 변수(Varibale)와 자료형(Data Type) : char, short, int, long, float, double (0) | 2021.03.06 |
[C언어 기초코딩: 예제로 간단 정리] 1. 기본 코드 구조(Program Structure) (3) | 2021.03.05 |