C언어/참고서: C언어 콘서트

C언어 6차시 변수와 자료형, 정수형, initialization, constant, 8진법, 16진법, 기호상수, const, overflow

Olivia-BlackCherry 2023. 3. 21. 10:54

목차

    1. 변수 Variable

    프로그램에서 값들이 저장되는 공간을 변수라고 한다. 

    변수는 사용 전, 미리 선언 declare되어야 한다. 

    변수 선언이란 프로그램에서 어떤 종류의 변수를 사용할지 컴파일러에게 미리 알리는 것이다. 

    <변수 선언 형식>

    자료형 변수이름 ;
    int                   ;
    int i ;

     

     

    2. 변수 초기화 initialization

    변수 선언과 동시에 값을 넣으면 그것이 초기값이 된다. 

    변수는 메모리 memory에 만들어 진다. 

     

     

    3. 변수 이름 짓기

    3-1 규칙

    1) 알파벳 문자, 숫자, 밑줄 문자_ 로 구성됨

    2) 공백 X

    3) 첫 시작은 알파벳 또는 밑줄 문자_ (숫자X)

    4) 대소문자 구별

    5) 여러 단어의 변수 이름은 중간에 밑줄을 넣거나, 첫 글자를 대문자로 

    6) 필요 이상으로 길게 하지 않기(최대 63개 또는 31개까지만 허용)

    7) 키워드(keyword) X

    ※ 키워드? keyword= reserved word

    C언어에서 이미 사용되고 있는 고유한 의미를 가진 단어. 

    예약어라고도 한다. 

     

    3-2 좋은 변수 이름이란?

    변수의 역할을 가장 잘 설명하는 이름을 지어야 함.

    의미가 명확한 변수는 전체 코드를 이해하기 쉽게 만들기 때문이다. 

     

     

    4. 자료형 data type

    4-1 자료형 종류

    데이터의 타입, 즉 종류라는 의미로 크게 3가지가 있다.

    동일한 자료형의 변수를 여러 개는 한 줄로 선언할 수도 있다.

    각 자료형마다 저장할 자료형의 크기가 다르다.  

    1) 정수형 : short, int, long, long long

    2) 부동소수점형 : float, double, long double

    3) 문자형 : char

     

    4-2 왜 다양한 자료형을 사용할까?

    나는 온라인에서 온갖 잡화를 판매하는 사장이다. 

    오늘은 손바닥 만한 크기의 솜 인형 1개, 내 몸집만한 유리 장식품이 주문으로 들어왔다. 

    나는 적당한 택배 상자에 해당 물품을 포장해야 한다. 

    만약 똑같은 재료와 크기의 상자에 각 상품을 담으면 어떨까?

    매우 비효율적이다. 

    솜 인형을 담고 나면 빈 공간이 너무 남는다. 

    유리장식품을 담을 때는 택배 상자 공간이 작을 수 있다. 

     

    자료형도 마찬가지다. 

    저장할 수 있는 한계가 있기 때문에, 최대한 효율적으로 메모리 공간을 사용하여 프로그래밍 처리 속도를 늘리는 데 그 취지가 있다. 

     

    4-3 각 자료형별 저장 크기 byte단위

    1) 정수형 : short 2, int 4, long 4, long long 8

    2) 부동소수점형 : float 4 , double 8, long double 8

    3) 문자형 : char 1

     

    4-4 상수 constant

    실행 중에 변경되지 않는 값 

     

     

    5.  정수형

    5-1 자료형 크기

    * short형 16비트 =2바이트 

    15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
    총 16비트 각 비트마다 0또는 1이 올 수 있으므로,
    2X2X2...X2=2의 16승= 65536(32768*2)가지의 숫자 표현할 수 있다.
    첫 비트는 부호를 나타낸다. 
    따라서 -32768~32767까지의 정수를 표현할 수 있다.

    * int형 32비트 = 4바이트

    * long형 32비트 = 4바이트

    ---> 약 -21억~ 21억까지의 정수 표현

     

    ※비트, 바이트 

    비트 bit : 컴퓨터에서 사용하는 정보의 최소단위, 한 비트당 선택지는 0또는 1로 2진수로 표현된다. 

    바이트 byte : 8개의 비트가 모인 것

     

    5-2 unsigned 수식자

    unsigned int x;
    unsigned speed;

    ★양수만을 나타낸다는 것을 의미

    음수가 제외되면 같은 비트로 더 넓은 범위의 양수를 나타낼 수 있다. 

    unsigned는 unsigned int형을 의미한다.

        -2 -1 0 1    
            0 1 2 3

    (unsigned double X)

     

    5-3 오버플로우

    변수가 나타낼 수 있는 범위를 넘는 숫자를 저장하면 오버플로우가 발생한다. 

    가장 처음으로 돌아가서 시작한다. 

    컴파일러는 아무런 경고를 하지 않으므로 더욱 주의해야 한다. 

     

    5-4 입출력 형식 지정자

    자료형 형식 지정자
    short %hi
    int %d
    long %ld
    long long %lld

     

    5-5 정수 상수

    붙이지 않아도 되지만, 프로그래머가 지정하고 싶은 경우 접미사를 붙인다.

    접미사 자료형
    u / U unsigned int (10진법) 230321u / 230321U
    l / L long (8진법) 023l / 023L
    ul / UL unsigned long (16진법)0xA2F7ul / 0xA2F7UL

    ※ 8진수는 앞에 0을 붙인다.

    16진수는 앞에 0x를 붙이고, 0~9개의 숫자와 A~F 6개의 문자를 사용하여 수를 표현한다. 

    하드웨어와 관련하여 비트 조작을 할 때는 10진법보다 16진법이 사용하기 편리하다. 

    16진수에서 하나의 자릿수는 3비트에 해당한다. 

    ex) 0x0f(16진수) = 0000 2222(2진수)

    ~진수 형식지정자
    10진수 %d
    16진수 %#x
    8진수 %#o

     

     

    5-6 기호 상수 symbolic constant

    보통 상수는 이름 없는 리터럴 상수 literal이다.

    상수에 변수처럼 이름을 붙이고 싶다면, 기호 상수를 이용한다.

    #define을 붙여 전처리기가 처리하도록 한다. 

    #define WATER 1.5

    변수 선언 앞에 const를 붙인다. const는 constant의 약자로, 선언된 변수는 딱 한 번만 값을 저장할 수 있다.

    const int WATER = 1.5