Literal Constant Number
symbolic Constant Number
pre processor [= #define]
Literal Constant Number
이름을 지니지 않는 상수
이름이 없기 때문에 메모리에 저장되면 이 값을 변경할 수 없다.
Literal Constant Number Example
Source Code
#include <stdio.h>
int main()
{
int val = 30+40;
return 0;
}
Review
val 변수가 나타내는 메모리 공간에 70이 저장된다.
상수들도 메모리 공간에 저장된다.
30, 40도 메모리에 저장되고 CPU에 의해 연산된다.
이름이 없기 때문에 메모리에 저장되면 이 값을 변경할 수 없다.
리터럴 상수의 기본 자료형
상수도 메모리 공간에 저장되기 위해서 자료형이 결정된다.
Source Code 1
#include <stdio.h>
int main(void)
{
char c = ‘A’; // 문자상수(char)
int i = 5; // 정수상수(int)
double d= 3.15; // 실수상수(double)
return 0;
}
Review 1
기본적으로 문자상수는 1byte 할당, 정수상수는 4byte 할당, 그리고 실수상수는 8byte를 할당한다.
Source Code 2
#include <stdio.h>
int main(void)
{
float f = 3.14; // float f= 3.14f
return 0;
}
Review 2
3.14는 실수상수이고 일반적으로 8byte를 할당한다. 하지만 위의 소스코드에서 이를 float[4 byte]로 선언하면 3.14가 용량이 작아서 프로그램이 실행은 되지만 warning 메시지가 발생한다.
Symbolic Constant Number
이름을 지니는 상수
심볼릭 상수를 정의하는 방법
const 키워드를 통한 변수의 상수화
상수는 일반적으로 대문자로 선언한다.
Source Code 1
#include <stdio.h>
int main(void)
{
const int MAX=100;
MAX=102;
const double PI=3.1415;
return 0;
}
Review 1
MAX가 const 에 의해 심볼릭 상수가 된 상태에서 그 아래 102를 정의하면 이와 같은 오류가 발생한다.
“assignment of read-only variable”
Source Code 2
#include <stdio.h>
int main(void)
{
const int MAX;
MAX=100;
return 0;
}
Review 2
“assignment of read-only variable”
오류가 발생한다. 그 이유는 심볼릭 상수 MAX에 쓰레기 값으로 초기화되었기 때문이다.
즉, 100으로 한 번 더 초기화하면 에러가 발생한다.
No comments:
Post a Comment