본문 바로가기
IT/C

[C언어] 기초 내용 정리 (변수, 연산자)

by dwoi 2023. 3. 23.

이번 글은 C언어에서의 변수, 상수, 연산자에 대해서 공부한 내용을 정리하는 글 

 

목차

     


    C언어

     


    1. 변수

    1.1. 변수

    • 데이터를 저장하는 임시 저장 공간
    • 메모리 공간

    데이터 : 변수에 저장되는 값, 변수에 저장된 데이터는 변경될 수 있다.

    1.1. 변수의 종류

    • 정수형 변수
      • char형, short형, int형, long형
    • 실수형 변수
      • float형, double형, long double형

     

    1.2. 변수 선언시 주의할 점.

    1. 변수 선언은 제일 앞쪽에 한다. (제일 앞쪽에 안하면 error 가능성 존재)
    2. 변수 이름은 의미 있게 짓는다.
    3. 변수 선언 시 안되는 사항
      1. 특수 기호, 공백 문자, 맨 처음에 숫자를 사용하면 안됨.
      2. C언어에서 사용되는 키워드를 변수 이름에 사용하면 안됨.
      3. 대소문자 구분
      4. ANSI에 표준화된 키워드들은 제외할 것

     

    즉 내가 변수 var_a를 선언하면 운영체제는 메모리에다가 내가 선언한 변수명의 작은 공간을 만들어내고

    그것의 주소는 &var_a이다.

     

    1.3. 변수의 시작 주소

    • 변수 앞에 &를 붙이면 변수의 시작 주소를 알 수 있다.

     


     

    2. 상수

    2.1. 상수란?

    • 어떤 상황에도 변하지 않는 값을 의미

     

    2.2. 상수의 종류

    • 리터럴 상수 : 글자 그대로의 의미가 있어서 이름이 없는 상수
      • 정수형 상수 (10진수, 16진수, 8진수)
        • 10진수 (1,2,3,4 등)
        • 16진수(0x1,0x2) : 엎에 0x를 붙임.
        • 8진수(01, 02,03) : 앞에 0을 붙임. → ※ 파이썬에선 0o로 표현했음.
      • 실수형 상수
      • 문자 상수
        • a,b,c와 같은 알파벳, ! @ #과 같은 특수 기호들 다 상수
      • 문자열 상수
    • 심볼릭 상수 : 상수를 기호화하여 변수처럼 이름이 있는 상수
      • const 키워드 이용하기
      • #define문 이용하기

     

     


     

    연산자

    3.1. 연산자와 피연산자

    • 연산자 : 연산을 수행하는 기호 (ex. +)
    • 피연산자 : 연산에 참여하는 변수나 상수 값

     

    3.2. 연산자의 종류

    1.  대입 연산자 (=)
      • 데이터를 저장하는 연산자
      • 우항에 있는 값을 왼쪽에 있는 변수에 대입하는 의미
    2. 산술 연산자 (사칙연산)
      • 덧셈 : +
      • 뺄셈 : -
      • 곱하기 : *
      • 나누기 : /
      • 나머지 : %
    3. 복합 대입 연산자
      • 산술 연산자와 대입 연산자를 하나로 나타내는 기호
        • 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에 값을 저장
    4. 증감 연산자
      • ++, -- 기호를 이용하는 연산자 (1증가 또는 1감소 시키는 연산자)
        • ++a : 선 증가 후 연산
        • a++ :선 연산 후 증가
        • --a : 선 감소 후 연산
        • a-- : 선 연산 후 감소
      • 아래의 코드블럭 1 참조.
    5. 관계 연산자
      • 관계를 비교하여 참과 거짓을 결론 짓는 연산자 (파이썬과 동일하므로 자세한 설명 생)
        • >
        • <
        • >=
        • <=
        • ==
        • !=
    6. 논리연산자
      • && : AND 연산자 (논리곱)
        • 둘 다 True여야만 True, 둘 중 하나라도 False면 False 
      • || : OR 연산자 (논리합)
        • 둘 중 하나만 True면 True, 둘 다 False 여야만 False
      • ! : NOT 연산자 (논리 부정)
        • True에 !하면 False , 단순하게 부정한다고 생각하면 됨.
    #include<stdio.h>
    int main()
    {
    	
        int num1 = 10, num2 = 10;
        int a,b;
        
        a = ++num1;
        printf("%d, %d \n", a, num1); // 선 증가 후 연산 num1이 1증가하고 연산하니 둘다 11
        
        b = num2++;
        printf("%d, %d \n", b, num2); // 선 연산 후 증가 num2의 10이 b에 대입되고 num2 1 증가
        
        return 0;
    }

     

    3.3. 비트 연산자

    3.3.1. 비트와 바이트

    비트 : 2진수 값 하나(0 또는 1)을 저장할 수 있는 최소 메모리 공간

    바이트 : 8비트는 1바이트

     

    ※ 2진수를 16진수와 8진수로 표현하는 방법

     

    3.3.2. 비트 연산자

    • 데이터를 비트 단위로 처리하는 연산자
      • & : 비트 단위 AND 연산 → 두 개의 비트 모두 1일때 1을 반환
      • | : 비트 단위 OR 연산 → 둘 중 하나의 비트가 1일때 1을 반환
      • ^ : 비트 단위 XOR 연산 → 두 개의 비트가 서로 같으면 0, 다르면 1을 반환
      • ~ : 비트 단위 NOT 연산 → 1이면 0 0이면 1
      • >> , << : 비트 이동 연산자
        • ex. a << 3 왼쪽으로 세칸 이동
        • 왼쪽으로 한칸씩 이동할때마다 2배씩 해준거나 마찬가지.

     

    ~ 연산자

     

     

     

    3.4. 연산자 우선 순위

    위처럼 다양한 종류의 연산자가 존재.

    사칙연산도 곱하기를 먼저하는 거처럼 연산자에도 우선 순위가 존재.

    가장 확실한 건 ()로 먼저 계산할 걸 잘 정리해서 식을 보기 좋게 만드는 게 더 중요

     


     

     

    마무리

    비트 연산자가 헷갈린다기보다는

    이걸 10진수던 8진수던 16진수를 2진수로 변환하고 연산하는 과정이 헷갈릴 수 있다고 판단.

    2진수에 익숙해져서 비트와 바이트 단위에 대한 이해 필요.

     

     

    댓글