Post

C 언어(6) 연산자

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 += ba = 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 -= ba = 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 *= ba = 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 /= ba = 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 %= ba = 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 반환 
}
This post is licensed under CC BY 4.0 by the author.