본문 바로가기
Programming/C Memo

04. 연산자(1) [산술, 비교, 논리]

by (J&M) 2020. 2. 9.

본 글은 C언어를 배우고 나서 복습 겸 정리한 글입니다.

요약


연산자

    연산자는 값을 비교하거나 계산할 때 쓰인다.

    연산이 되는 값을 피연산자라고 한다.

C에서 연산자의 우선순위

    산술 > 시프트 > 비교 > 비트 > 논리 > 삼항 > 대입

    연산을 명확히 하려면 ()를 사용하면 된다.

 

산술 연산자


단항 연산자

단항 연산자에는 부호 표시를 위한 +,- 연산자와 값을 증가시키고 감소시키는 증감 연산자가 있다.

증감 연산자는 위치에 따라 연산 순서가 바뀐다.

int x = -1;
printf("x1 : %d \n", x++);
printf("x2 : %d", ++x);

위 코드에서 x1과 x2는 뭐라고 출력될까

 

x1 : -1, x2: 1으로 출력될 것이다.

 

해석해보면,

처음에 정수형 변수 x가 선언됨과 동시에 1이 할당되었다.

그다음 x++이 출력이 되는데 여기서 ++이 증감 연산자이고 변수 뒤에 붙어 있으므로 후위 증감 연산자라고 한다.

후위 증감 연산자는 증감 연산이 나중에 실행된다.

 

printf("x1 : %d \n", x++);에서 x의 초기값인 -1이 출력되고 1이 증가한 0이 출력된다.

 

그다음엔 ++x가 출력이 된다. ++이 변수 앞에 붙어 있으므로 전위 증감 연산자라고 한다.

전위 증감 연산자는 증감 연산이 먼저 수행된다.

 

printf("x2 : %d \n", ++x); 에서는 x값이 0이었고 전위 증감이므로

먼저 1이 증가한 1이 x에 저장된 후에 출력이 되므로 1이 출력된다.


이항 연산자

이항 연산자는 피연산자가 2개가 필요한 산술 연산자로 사칙연산과 나머지 계산을 할 수 있는 연산자이다.

 

+ : 더하기

- : 빼기

* : 곱하기

/ : 나누기

% : 나머지 (a % b => a를 b로 나눈 나머지)

 

비교 연산자


비교 연산자

비교 연산자는 피연산자 사이의 관계를 비교한다.

비교 연산의 결과가 참이면 1을, 거짓이면 0을 반환한다.

 

== : 값이 같은지

!= : 값이 다른지

<= : 이하

>= : 이상

< : 미만

> : 초과

 

#include <stdio.h>

int main()
{
    int a = 1;
    int b = 5;
    
    printf("%d\n", a==b);
    printf("%d\n", a!=b);
    printf("%d\n", a<=b);
    printf("%d\n", a>=b);
    printf("%d\n", a<b);
    printf("%d\n", a>b);
    
    return 0;
}

위 코드의 실행결과는 0 1 1 0 1 0이다.

 

a에는 1이, b에는 5가 저장되어있다.

처음 출력은 'a와 b가 같다 (==)' 가 거짓이므로 0을 출력

다음은 'a와 b가 같지 않다(!=)' 가 이므로 1을 출력

다음은 'a가 b보다 작거나 같다(<=)' 가 이므로 1을 출력

다음은 'a가 b보다 크거나 같다(>=)' 가 거짓이므로 0을 출력

다음은 'a가 b보다 작다(<)' 가 이므로 1을 출력

다음은 'a가 b보다 크다(>)' 가 거짓이므로 0을 출력

 

논리 연산자


논리 연산자

논리 연산자는 피연산자들을 판단하여 참, 거짓을 결정한다.

 

&& : 모두 참일때 참 

|| : 한쪽만 참이어도 참 

! : 논리를 뒤집음

 

A B A && B A || B
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 1

&&은 둘다 참이어야 참, ||는 둘 중 하나만 참이어도 참으로 결정한다.

A !A
0 1
1 0

!은 논리를 반대로 뒤집어버린다.

'Programming > C Memo' 카테고리의 다른 글

06. 출력과 주석  (0) 2020.02.10
05. 연산자(2) [ 비트, 시프트, 삼항, 대입]  (0) 2020.02.10
03. 자료형  (0) 2020.02.09
02. 변수와 상수  (0) 2020.02.09
01. Hello World!  (0) 2020.02.08

댓글