Coding & Programming/C언어 기초(A-Z)

[C언어 기초코딩: 예제로 간단 정리] 3. 연산자(Operator)

mainCodes 2021. 3. 7. 19:53

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)
printf(">> b와 c는 값이 같습니다.\n");

    else
printf(">> b와 c는 값이 같지 않습니다.\n");



    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였습니다(•̀ᴗ•́)و