장 준
씨포유
장 준
전체 방문자
오늘
어제
  • 분류 전체보기 (91)
    • 프로그래밍언어 (15)
      • c언어 (10)
      • 파이썬 (0)
      • 자바스크립트 (5)
    • PS (58)
      • 알고리즘 이론 (18)
      • 프로그래머스 (5)
      • 백준 (35)
    • CS (16)
      • 자료구조 (5)
      • 운영체제 (3)
      • 네트워크 (5)
      • 데이터베이스 (0)
      • 기초 지식 (3)
    • 브랜드 (1)

블로그 메뉴

  • 태그

인기 글

태그

  • 코딩테스트
  • C
  • 씨포유
  • JS
  • Implementation
  • python3
  • recursion
  • 파이썬
  • Priority Queue
  • bitmask
  • Network
  • Visual Studio
  • 프로그래머스
  • 자료구조
  • JavaScript
  • 프로그래밍언어
  • pypy3
  • DP
  • BFS
  • 알고리즘
  • codesandbox
  • DFS
  • CS
  • 백준
  • nodejs
  • Stack
  • 기초 지식
  • Kruskal algorithm
  • 자바스크립트
  • PS

최근 댓글

최근 글

hELLO · Designed By 정상우.
장 준

씨포유

C언어 독학 #6. 연산자
프로그래밍언어/c언어

C언어 독학 #6. 연산자

2020. 5. 13. 18:47
728x90

인삿말

 

안녕하세요 알다브입니다.

다들 잘 지내고 있나요?

잠잠해진 것 같던 코로나가 요즘

또 다시 문제죠 ㅜㅜ

참.. 언제쯤 나아질련지 모르겠습니다..

 

저번 글로 상수까지 알아봤는데요

이번 시간에는 연산자에 대해 알아보겠습니다.

잘 따라와주세요!

 

2020/05/12 - [프로그래밍언어/c언어] - C언어 독학 #5. 상수 변하지 않는 데이터

 

C언어 독학 #5. 상수 변하지 않는 데이터

안녕하세요 알다브입니다. 오랜만에 글을 쓰게 되네요 너무 오래 됐죠 ㅜㅜ 저번 시간에는 변수에 대해 알아봤는데요. 이번 시간에는 상수에 대해서 알아보는 시간을 갖도록 하겠습니다. 이전

c4u-rdav.tistory.com

 


연산자의 종류

 

 

 

연산자의 종류를 나타내는 표입니다.

연산자에 대해 설명할 때 이 표를 참조하고

보시면 되겠습니다.

 


대입 연산자

 

 

대입 연산자는 프로그래밍을 하면서

제일 많이 쓰는 연산자라고 볼 수 있습니다.

변수에 값을 저장할 때 쓰는 연산자입니다.

 

int a=1;

 

주의할 점은 a는 1과 같다

라고 해석하면 안 된다는 것입니다.

 

 


산술 연산자

 

 

+(더하기)

-(뺴기)

*(곱하기)

/(나누기)

%(나머지)

 

#include<stdio.h>

int main() {
    printf("%d\n", 8 + 3);
    printf("%d\n", 8 - 3);
    printf("%d\n", 8 * 3);
    printf("%d\n", 8 / 3);
    printf("%d\n", 8 % 3);
    return 0;
}

 

8과 3을 피연산자로 써서

각각의 연산 결과를

출력한 코드 입니다.

 

 

8 = 2*3+2

 

나누기 연산자의 몫은

2

나머지 연산자의 값은

2가 됩니다.

 


복합 대입 연산자

 

 

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

 

 

오른쪽의 수식이

왼쪽의 수식으로 간략히 표현된

것입니다.

 

여기서 주의할 점은 연산 순서입니다.

 

a=a+b

는 a+b의 연산을 하고

변수 a에 이 값을

저장하라는 의미입니다.

 

#include<stdio.h>

int main() {
    int a = 10;
    int b = 10;
    a *= 2;
    b = b * 2;
    printf("%d\n", a);
    printf("%d\n", b);
    return 0;
}

 

변수 a와 b에 같은 값을 저장하고

그 결과를 확인해볼까요?

 

 

이렇게 결과가 같다는 것을

확인할 수 있습니다.

 

우리는 저렇게 간략히

표현된거라고 이해하면 되지만

컴퓨터는 다른 연산자로

인식하기 때문에

 

연산을 한 번 밖에 하지 않는 복합 대입 연산자가 더 효율적이라고 할 수 있습니다!

 


증감 연산자

 

 

++a    선 증가, 후 연산

a++    선 연산, 후 증가

--a     선 감소, 후 연산

a--     선 연산, 후 감소

 

처음 증감 연산자를 접하신 분들은

이 의미가 무슨 차이가 있나 싶겠지만

어떻게 사용하느냐에 따라

차이가 아주 크답니다!

 

++a와 a++는 a=a+1이지만

 

++a는 a+1연산을 한 후

대입연산을 하는 것이고

 

a++는 대입연산을 한 후

a+1연산을 하는 것입니다.

 

설명으로는 이해가 잘 안 될 수도

있으니 코드로 설명해보도록 할게요.

 

#include<stdio.h>

int main() {
    int a = 10;
    int b;
    
    b = ++a;
    printf("%d\n", a);
    printf("%d\n\n", b);
    
    b = a++;
    printf("%d\n", a);
    printf("%d\n\n", b);
    
    return 0;
}

 

a에는 10이 저장되어있고

 

b=++a;

연산을 통해 값을 받습니다.

 

과연 b에는 어떤 값이 저장될까요?

 

선증가, 후대입이기 때문에

a가 1이 증가되고,

b에 그 값이 저장이 됩니다.

 

b=a++;

 

이 연산은 선대입, 후증가이기 때문에

먼저 대입을 한 후 a가 1

증가하게 됩니다.

 

이해가 가시나요?

한 번 직접 코딩해보시고

결과를 확인해봐요!

 

더보기

 

 

차이를 아시겠나요?

 

a가 선증가, 후대입

 

a=10  ->  a=11

b=a

 

따라서 a=11, b=11

 

아래는 a가 선대입, 후증가

 

b=a

a=11  ->  a=12

 

이해되시죠??

 

 

 


관계 연산자

 

 

a>b

 

> 부등호가 언제 쓰일까요?

바로 a와 b의 크기를 비교할 때

a가 b보다 크다는 것을 나타낼 때

쓰이죠.

 

c언어에서 이 부등호는

관계연산자로 a가 b보다 클지를

비교해서 참이면 1로 표현하고

거짓이면 0으로 표현하게 됩니다.

 

a<=b 는 a가 b보다 작거나 같은지를

비교하는 연산이고

 

a==b는 a와 b가 같은지를 비교하는

연산입니다.

(=이 아닙니다.)

 

a!=b는 a와 b가 다른지를 비교하는

연산입니다.

 

#include<stdio.h>

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

 

 

 

a=10과 b=5로

각 관계연산을 해

출력한 프로그램입니다.

 

각각 참, 거짓에 맞게

출력된 것을 확인 할 수 있습니다.

 


논리 연산자

 

 

&&  =  AND 연산자, 논리곱

||  =  OR 연산자, 논리합

!  =  NOT 연산자, 논리 부정

 

&&는 말 그대로 그리고의 의미입니다.

피연산자가 둘 다 참이어야만

참이 됩니다.

 

0  &&  0  =  0

0  &&  1  =  0

1  &&  0  =  0

1  &&  1  =  1

 

||는 말 그대로 또는의 의미입니다.

피연산자가 한 개만 참이어도

참이 됩니다.

 

0  ||  0  =  0

0  ||  1  =  1

1  ||  0  =  1

1  ||  1  =  1

 

!는 결과를 반전시킵니다.

 

!  0  =  1

!  1  =  0

 

위에서 배운 관계연산자를

활용해서 논리연산자를

사용해볼까요?

 

#include<stdio.h>

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

 

 

a>b가 참이고 a!=b도 참입니다.

&& 연산자를 사용했기 때문에

결과는 참이 됩니다.

 

아래는

a<b는 거짓이지만 a!=b는 참이기 때문에

결과는 참이 됩니다.

 

 


조건 연산자

 

 

조건 ?  식1  :  식2

 

조건 연산자는 조건을 만족하면

식1이 실행되고

그렇지 않으면 식2가 샐행되도록 합니다.

 

나중에 배우게 될 조건문과 같은

역할을 합니다.

 

#include<stdio.h>

int main() {
    int a = 10;
    int b = 5;
    int result;
    
    result = a > b ? a : b;
    
    printf("%d\n", result);
    
    return 0;
}

 

조건은 a>b이고

이 조건이 참이면 result에

a가 저장되고

거짓이면

b가 저장됩니다.

 

대소비교후 값을 저장하는

연산 등으로 활용할 수 있습니다.

 

 


마무리

 

오늘은 연산자에 대해서 알아봤는데요.

다음 글에서는 비트 연산과

비트 연산자에 대해

알아보도록 하겠습니다!

 

 

 

728x90
반응형
저작자표시 (새창열림)

'프로그래밍언어 > c언어' 카테고리의 다른 글

C언어 독학 #8. 자료형  (0) 2020.07.18
C언어 독학 #7. 비트 체계와 비트 연산자  (0) 2020.07.17
C언어 독학 #5. 상수 변하지 않는 데이터  (2) 2020.05.12
C언어 독학 #4. 변수 데이터를 저장하자  (6) 2020.04.22
C언어 독학 #3. printf(), scanf() 데이터 출력과 입력  (4) 2020.04.21
    '프로그래밍언어/c언어' 카테고리의 다른 글
    • C언어 독학 #8. 자료형
    • C언어 독학 #7. 비트 체계와 비트 연산자
    • C언어 독학 #5. 상수 변하지 않는 데이터
    • C언어 독학 #4. 변수 데이터를 저장하자
    장 준
    장 준
    C4U(Computer For You)

    티스토리툴바