본문 바로가기

프로그래밍 언어들/C

3장 - C언어 변수(variable)

3장 - C언어 변수(variable)


변수란?

- 사전적으로 상황에 따라 변하는 값을 뜻합니다.

- 프로그램에서는 특정 데이터를 저장하는 공간이라고 할 수 있습니다.


먼저 아래의 소스코드를 보도록 하겠습니다.

 

#include <stdio.h>

int main( void)
{
    int number;

    number  = 10;

    printf("%d\n", 10);
    printf("%d\n", number);

   return 0;
}



실행 결과는 화면에, 10이 두 번 출력됩니다. 저번 포스팅에서 학습했듯이  line.9 - 10은 출력문입니다.

두 출력문 모두 %d 첨자를 이용해서 정수형 데이터를 출력하고 있습니다.


그러나 아래는 정수형 값이 아닌 문자가 씌여져 있지요?

예리한 분들은 아시겠지만, 단일문자나 문자열을 출력할 땐 따옴표(')와 쌍따옴표(")를 씁니다.


하지만 저렇게 따옴표 없이 입력하게 될 경우, 해당 이름의 변수를 의미하는 것입니다.


line.5 를 보시면, int number; 라고 적혀있습니다. 이것이 의미하는 것은

int는 변수의 데이터 타입, number는 변수의 이름입니다.

다시 말해서 정수형 데이터를 저장할 수 있는 number라는 변수를 선언한 것입니다.


line.7 에서는 정수 값 10을 number의 변수에 저장하고 있습니다. 즉 정수형으로 선언한 number라는 변수는

지금부터 10이라는 데이터를 가지게 되는 것이지요.


 


즉, 변수는 특정 데이터를 저장하는 공간이라고 말할 수 있습니다.

int 외에도 여러가지 데이터 타입의 변수를 선언할 수 있습니다. 아래 표를 참고하세요


 종류

선언부

첨자 

크기

 수 표현 범위

 정수형

 int

 %d

 4 byte

 2-31 ~ 231-1

 문자형

 char

 %c

 1 byte

 -128 ~ 127

 실수형

 float

 %f

 4 byte

 

3.4*10-38 ~ 3.4*1038

 실수형

 double

 %lf

 8 byte

 1.7*10-308 ~ 1.7*10308 


위에는 기본적인 것들을 정리해놓은 것이고, 필요하다면 다른 것들도 찾아보시길 권합니다.

변수의 크기는 사용 중인 컴퓨터가 몇 bit 냐에 따라 다르기 때문에 참고만 하시길 바랍니다.


보통 데이터 타입들은 마지막 비트를 부호비트로 사용합니다. char형 변수를 예로 들어보면


 부호비트

데이터

데이터 

데이터 

데이터 

데이터 

데이터 

데이터 


부호비트를 제외하고 남는 비트는 7개라, 표현할 수 있는 수의 범위가 위의 표 처럼 되는 것입니다.


하지만 프로그래밍 중에, 다음과 같은 상황에 놓여있을 수 있습니다.

- 음수를 표현할 필요가 없다. ( 음수를 표현하면 안된다. )

- 더 많은 양수를 표현하고 싶다.


다음 소스코드를 참고하시길 바랍니다.

 

 

#include <stdio.h>

#define INT_MAX 0xFFFFFFFF;

int main( void)
{
    unsigned int unnumber;
    int number;

    number      = INT_MAX;
    unnumber    = INT_MAX;
   
    printf("number = %d\n", number);
    printf("unnumber = %u\n", unnumber);

   return 0;
}

 


unsigned int형 변수 unnumber int형 변수 number를 선언하고, 각각에 정수형 변수의

최대표현 범위의 값을 대입했습니다. 결과는 다음과 같습니다.


 


number를 살펴보면, 자신의 수 표현 범위를 초과했기 때문에(부호비트를 사용) 값이 -로 되어버립니다.

하지만 unsigned 형 변수의 경우는 그 수를 완전히 표현합니다.


unsigned형 데이터 타입이란, 부호비트를 데이터비트로 사용한다는 의미입니다.

정수형 외에도 다른 데이터 타입에도 모두 사용가능합니다.