Please Enable JavaScript!
Mohon Aktifkan Javascript![ Enable JavaScript ]

상수에 대한 이해

2010. 4. 19. 19:44programming/c

728x90
상수에 대한 이해  

■ 이름을 지니지 않는 상수 : 리터럴(literal)상수



int main(void){

     int i1=3+4;

     int i2=5+a;

     double d=3.24+5.12;



변수는 총3개(i1, i2, d)이고 상수는 총 5개이다.(3, 4, 5, 3.24, 5.12)



■ 리터럴 상수의 자료형



int main(void){

     char c='A'        //문자상수

    int i=5;              // 정수 상수

     double d.315;   //실수상수

......



C언어는 기본적으로 상수건 변수건 간에 자료형을 결정 짓는다. 그래서 적절히 메모리 공간을 할당하고 값을 저장할 수 있는것이다. 오해하지 말자. 대입 연산자의 왼쪽에 있는 변수의 자료형에 따라서 상수의 자료형이 결정되는 것이 아니다. 대입 연산자 오른쪽에 선언하고 있는 상수에 맞게 변수를 선언한 것뿐이다.





V++컴파일러로 다음과 같은 코드를 컴파일해 보자

int main(void){

     float f=3.14;

     return 0;

}



결과 : warning C4305: 'initializing' : truncation from 'const double' to 'float'



3.41라는 8바이트짜리 double형 상수를 4바이트짜리 float형 변수 f에 대입하다 보면 데이터가 손실될 수도 있다는 뜻이다. 이는 3.14라는 상수가 double형으로 인식되고 있음을 증명하는 것이다.



int main(void){

   float f=3.14f;

     return 0;

}

접미사를 통해서 상수의 자료형을 지정하는 것이 가능하다.

접미사           자료형          사용 예

u or U           unsigned int     304U

l or L                long                 304L

ul or UL        unsigned long         304UL

f or F                float                 3.15F

l or L                long double         3.15L





■ 이름을 지니는 상수 : 심볼릭(Symbolic)상수

변수와 마찬가지로 이름을 지니는 상수이다. 심볼릭 상수를 표현하는 방법은 두가지가 있는데, 하나는 const키워드를 이용하는 방식이고, 또하나는 매크로를 이용하는 방식이다.

매크로는 나중에 다루고 const키워드를 이용하는 방식만을 살펴보기로 하자.



int main(void){

   const int MAX=100;

   contst double PI=3.1415;

......

}



상수를 위와 같이 이름을 주어서 정의하게 되면 선언과 초기화를 분리시킬수도 없고 변경할수도 없다.



다음은 에러를 발생시키는 문장이다.



int main(void){

   const int MAX;

   MAX=100;

......

}





※ 상수의 이름은 일반적으로 대문자로 표시하는 좋다. 그 이유는 변수와 상수를 구분할수 있기 때문이다.
728x90

'programming > c' 카테고리의 다른 글

putc, putchar, fputc, or putw Subroutine  (0) 2010.05.25
[C] 논리, 비트 연산자  (0) 2010.04.19
scanf 로 입력받을시 blank 인식은 어떻게 할까  (1) 2010.04.05
[C프로그래밍] true , false  (0) 2010.04.05
코딩할때 최적화  (0) 2010.04.05