반응형

안녕하세요.

오늘은 C언어의 연산자에 대해 알아보도록 하겠습니다.

 

연산자

수나 식을 일정한 규칙에 의해 계산하기 위해서 연산자를 사용합니다.

 

산술 연산자

1. 이항연산자

피연산자를 덧셈, 뺼셈, 곱셈, 나눗셈, 나머지 연산을 말합니다.

연산자 설명 사용
+ 더하기 A+B
- 빼기 A-B
* 곱하기 A*B
/ 나누기 A/B
% 나머지 A%B

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
void main()
{
    int num1 = 50;
    int num2 = 6;
 
    printf("num1 + num2 : %d\n", num1 + num2);
    printf("num1 - num2 : %d\n", num1 - num2);
    printf("num1 * num2 : %d\n", num1 * num2);
    printf("num1 / num2 : %f\n", (float)num1 / (float)num2); // 소수점 출력을 위해서 float로 강제 형변환합니다.
    printf("num1 %% num2 : %d\n", num1 % num2);
}
cs

2. 단항 연산자

피연산자에 증가(++),감소(--)와 양수(+),음수(-)를 표시하는 연산자입니다.

연산자 설명 사용
+ 양수표현 +A
- 음수표현 -A
++ 1씩증가 A++, ++A
-- 1씩감소 A--, --A

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
void main()
{
    int num = 50;
 
    printf("num : %d\n", num);
    printf("-num : %d\n"-num);
    printf("num++ : %d\n", num++);    // 다음 코드에서 1증가
    printf("++num : %d\n"++num);    // 현재 코드에서 1증가
    printf("num-- : %d\n", num--);    // 다음 코드에서 1감소
    printf("--num : %d\n"--num);    // 현재 코드에서 1감소
}
 
cs

3. 대입 연산자

오른쪽 식을 왼쪽값에 대입합니다.

연산자 설명 사용
= 오른쪽 식을 왼쪽 값에 대입 C = A + B

복합 산술연산자 ( 이항연산자와 대입연산자를 같이 사용)

연산자 설명 사용
+= 왼쪽 수에 오른쪽 수 더해 왼쪽 수에 대입 A += B (A = A + B)
-= 왼쪽 수에 오른쪽 수 빼기를 해 왼쪽 수에 대입 A -= B (A = A - B)
*= 왼쪽 수에 오른쪽 수 곱해서 왼쪽 수에 대입 A *= B (A = A * B)
/= 왼쪽 수에 오른쪽 수 나누어 왼쪽 수에 대입 A /= B (A = A / B)
%= 왼쪽 수에 오른쪽 수 나눈 나머지를 왼쪽 수에 대입 A %= B (A = A % B)

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
void main()
{
    int num = 10;
 
    printf("num : %d\n", num);
    num += 6;    // num = num + 6
    printf("num : %d\n", num);
    num -= 8;    // num = num - 8
    printf("num : %d\n", num);
    num *= 4;    // num = num * 4
    printf("num : %d\n", num);
    num /= 2;    // num = num / 2
    printf("num : %d\n", num);
    num %= 2;    // num = num % 3
    printf("num : %d\n", num);
}
cs

비교 연산자(혹은 관계 연산자)

왼쪽값과 오른쪽 값을 비교합니다.

연산자 설명 사용
< 오른쪽 값이 왼쪽 값보다 클 때 1, 아니면 0 A < B
> 왼쪽 값이 오른쪽 값보다 클 때 1, 아니면 0 A > B
<= 오른쪽 값이 왼쪽 값보다 같거나 클 때 1, 아니면 0 A <= B
>= 왼쪽 값이 오른쪽 값보다 같거나 클 때 1, 아니면 0 A >= B
== 왼쪽 값과 오른쪽 값이 같을 때 1, 아니면 0 A == B
!= 왼쪽 값과 오른쪽 값이 다를 때 1, 아니면 0 A != B

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
void main()
{
    int num1 = 10;
    int num2 = 15;
 
    printf("num1 < num2 : %d\n", num1 < num2);
    printf("num1 > num2 : %d\n", num1 > num2);
    printf("num1 <= num2 : %d\n", num1 <= num2);
    printf("num1 >= num2 : %d\n", num1 >= num2);
    printf("num1 == num2 : %d\n", num1 == num2);
    printf("num1 != num2 : %d\n", num1 != num2);
}
 
cs

 

논리 연산자

왼쪽과 오른쪽을 논리연산(AND, OR, NOT)합니다.

연산자 설명 사용
&& 왼쪽과 오른쪽 논리값이 모두 1일 때 1 (AND 연산) A && B
|| 왼쪽과 오른쪽 논리값이 하나라도 1일 때 1 (OR 연산) A > B
! 논리값이 0이면 1, 1이면 0 !A

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
void main()
{
    int num1 = 1;
    int num2 = 1;
 
    printf("num1 && num2 : %d\n", num1 && num2);
    printf("num1 || num2 : %d\n", num1 || num2);
    num1 = 1;
    num2 = 0;
    printf("num1 && num2 : %d\n", num1 && num2);
    printf("num1 || num2 : %d\n", num1 || num2);
 
    printf("!num1 : %d\n"!num1);
}
 
cs

 

비트 연산자

비트(2진수) 연산을 위해서는 비트 연산자를 사용합니다.

연산자 설명 사용
& 비트(2진수)단위 AND 연산 A & B
| 비트(2진수)단위 OR 연산 A | B
~ 비트(2진수)단위 NOT 연산 ~A
^ 비트(2진수)단위 XOR 연산 A ^ B
<< 왼쪽으로 비트 이동 A << B
>> 오른쪽으로 비트 이동 A >> B

예제

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
#include <stdio.h>
 
void main()
{
    int num1 = 14;
    int num2 = 7;
 
    // num1      1110
    // num2  AND 0111
    //           0110 
    printf("num1 & num2 : %d\n", num1 & num2);
    // num1      1110
    // num2  OR  0111
    //           1111
    printf("num1 | num2 : %d\n", num1 | num2);
    
    // num1      NOT 1110 ->  ‭1111 1111 1111 1111 1111 1111 1111 0001‬
    printf("num1 : %d\n", ~num1);
    
    printf("11111num1 : %d\n", num1);
 
    // num1       1110
    // num2  XOR  0111
    //            1001
    printf("num1 ^ num2 : %d\n", num1 ^ num2);
 
    // 1110 >> 2 -> 0011
    printf("num1 >> 2 : %d\n", num1 >> 2);
    // 1110 << 2 -> 11 1000
    printf("num1 << 2 : %d\n", num1 << 2);
}
 
cs

 

포인터 연산자

변수가 참조하는 주소값과 포인터 변수가 가르키는 값을 얻기 위해 사용합니다.

연산자 설명 사용
& 변수의 주소값 &A
* 포인터 변수의 가르키는 값 *A

예제

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
void main()
{
    int num = 10;
    int* p = &num;
    
    printf("&num: %p\n"&num);
    num = 5;
    printf("*p: %d\n"*p);
}
cs

 

조건 연산자(혹은 삼항 연산자)

조건식으로 참 / 거짓에 따라 수식을 실행합니다.

연산자 설명 사용
조건식 ? 식1 : 식2 조건식이 참이면 식1이 적용, 거짓이면 식2 적용 A < B ? A = 5 : B = 10

예제

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
void main()
{
    int num1 = 14;
    int num2 = 7;
    (num1 < num2) ? (num1 = 5) : (num1 = 10);
 
    printf("num1: %d\n", num1);
    
}
 
cs

 

반응형

+ Recent posts