티스토리 뷰

C, C++

[ C언어 ] 9. 변수와 상수

RiKang 2017.11.20 19:34

Table of Contents


개요

정수형 변수 (Integer Type)

실수형 변수 (Floating-Point Type)

식별자

상수 (Constants)




1. 개요



 변수의 유형은 다음 두 가지에 의해 결정됩니다.


 1. 얼마나 많은 용량의 저장 공간을 사용하는가


 2. 저장해놓은 비트 정보(0101010)를 어떻게 해석하는가


 여기에서는 이후에 나올 배열, 함수, 포인터에서 자연스럽게 익히는 void type과 derived type 은 제외하고 다양한 정수형 변수와 실수형 변수의 종류에 대해서 소개합니다.




2. 정수형 변수 (Integer Type)


타입

서식문자

용량 

표현 범위 

상세설명 

char

%c

1 byte 

-128 ~ 127 or 0 ~ 255 

[C언어] 7. 변수(3) (변수형 char)

unsigned char

%c

1 byte 

0 ~ 255 

 

signed char

%c

1 byte 

-128 ~ 127 

 

short

%d 

2 byte 

-32,768 ~ 32,767 


unsigned short

%u

2 byte 

0 ~ 65535 

 

int

%d

4 byte

 -2,147,483,648 ~ 2,147,483,647

[C언어] 4. 변수 (1) (정수형 변수 int)

unsigned int

%u

4 byte 

0 ~ 4,294,967,295 

 

long long

%lld

8 byte 

-2^63 ~ 2^63-1 

 

unsigned long long

%llu

8 byte 

0 ~ 2^64-1 

 


 정수형 변수의 경우엔 대개 int를 사용하지만, 메모리를 절약하고 싶어서 short를 사용하거나, int의 표현 범위로는 부족하여 unsigned int, long long 등의 변수형을 사용하는 경우가 존재합니다. 그런 경우엔 해당 서식문자를 사용하면 나머지는 int 와 동일한 방법으로 사용할 수 있습니다. 




3. 실수형 변수 (Floating-Point Type)


C언어에 정수형 변수로 int가 있듯이, 실수형 변수로는 float 와 double이 있다.


이 두 변수형은 int와 달리 소수 표현이 가능하다. 아래와 같이 선언할 수 있다.



출처: http://weeklyps.com/entry/C언어-5-변수-2-실수형-변수 [weekly ps]

타입

서식문자

용량 

표현 범위 

상세설명 

float

%f

4 byte 

1.2E-38 ~ 3.4E+38 

[C언어] 5. 변수 (2) (실수형 변수)

double

%lf

8 byte 

2.3E-308 ~ 1.7E+308

 

long double

%Lf

10 byte 

-3.4E-4932 ~ 1.1E+4932 

 


 long double이 double에 비해 더 넓은 표현범위와 높은 정밀도를 가지긴 하지만, 연산의 실행 속도가 느린 단점이 있어(컴파일러 버전에 따라 다를 수 있습니다.) 대개는 float 와 double을 사용합니다.




4. 식별자 (Identifier)


C언어에 정수형 변수로 int가 있듯이, 실수형 변수로는 float 와 double이 있다.


이 두 변수형은 int와 달리 소수 표현이 가능하다. 아래와 같이 선언할 수 있다.



출처: http://weeklyps.com/entry/C언어-5-변수-2-실수형-변수 [weekly ps]

 C언어에서 식별자란 변수, 함수 등을 식별하기 위해 사용되는 이름을 말합니다. 식별자의 규칙에 따라 사용할 수 있는 이름과 없는 이름이 있기 때문에, 변수 이름을 정할 때에도 C언어 식별자의 규칙에 맞게 정해야 합니다. 그렇지 않으면 에라거 날 수 있습니다. (예를 들어 변수 이름을 int 로 정해서 int int; 이런 식으로 선언하는 경우입니다.)


규칙 1) A~Z 혹은 a~z 혹은 _(밑줄)로 시작해야 한다.


규칙 2) 시작 문자 뒤에는 0개 이상의 문자, 밑줄, 숫자가 와야 한다.


규칙 3) @,$,% 와 같은 문자는 허용하지 않는다.


규칙 4) 식별자는 대소문자를 구별하므로, Ad 와 ad 는 서로 다른 식별자로 구분한다.


규칙 5) C언어 문법에서 사용하는 단어들은 식별자로 사용할 수 없다. (예시. else, long, return, for, while 등등.)




5. 상수 (Constants)


 C언어에서 상수는 변수와 다르게 변하지 않는 저장공간을 의미합니다. 상수로 선언하고 난 이후,  그 안의 내용을 변경하려고 하면 에러가 발생합니다. 변수형 앞에 const 를 붙여줌으로서 선언할 수 있습니다.


1
2
3
4
5
6
7
8
//code by RiKang, weeklyps.com
#include <stdio.h>
 
int main(void) {
    const int N = 100000;
    printf("%d",N);
    return 0;
}
cs


 상수에 저장된 수는 변경될 수 없으므로 아래와 같이 해보면 에러가 나는 것을 확인할 수 있습니다.


1
2
3
4
5
6
7
8
9
//code by RiKang, weeklyps.com
#include <stdio.h>
 
int main(void) {
    const int N = 100000;
    N = N+5// 에러 발생
    printf("%d",N);
    return 0;
}
cs


 이를 통해 '실수로라도 변경하지 말아야 할 데이터' 를 저장하고 싶을 때 상수를 활용하면, 프로그래머의 실수로 그 내용을 변경하였을 때 프로그램의 애러 메시지를 통해 확인할 수 있습니다.