1) 리터럴 상수 (literal) - 이름이 없는 상수
- 이름이 없는 상수. 처음에 책을 봤을 때 제목에 이런 식으로 나와 이게 뭔가 했었다.
하지만 조금 읽어보니 어처구니가!!
EX) int a = 10 + 12;
a가 변수면은 10과 12는 리터럴 상수이다.
- _ - 어떤가 참으로 쉽지않은가? 게다가 위의말대로 이름이 없다.
책을 읽으면서 이런 것을 왜 이름까지 리터럴 상수라고 지어서 이렇게 분류까지 해놨을까?
사람들이 다 이유가 있어서 분류를 해놓은 것이니 우리는 만들어준 함수 조용히 가져다가 잘 쓰면 된다.
그래도 이렇게 쿡쿡 질러놓고 설명 안하기는 찝찝하니...
일반적으로는 변수를 만들때만 메모리가 설정(?ㄱ- 적당한 말이 만 떠오른다.) 된다고 생각하는데
연산을 위해 상수를 사용하면 상수도 메모리의 올라가게 되어있다.
연산을 위해서 상수가 메모리의 올라가는 것은 당연한 일!
그거 당연한거 아니야?! 라고 할 사람도 분명있겠지만 분명 처음 알게된 사람도 있을것이다 -ㅂ-!!
▣ 리터럴 상수의자료형
가끔 상수의 자료형 때문에 컴파일 중 경고가 뜨기도 하는데
EX) float a = 3.14;
이런 식으로 값을 초기화 하면은 경고가 뜬다.
초기화를 할 경우 값이 잘릴수도 있다는 경고인데 경고가 뜨는 이유는 바로 위에서 설명했다.
3.14를 담을 a는 float형이다. 하지만 3.14는 double형이다.
float는 double형보다 작기때문에 값이 잘릴 수 있다고 경고가 뜨는 것이다.
올바른 EX)
float a = 3.14f;
이런 식으로 정의 해 주면은 경고가 뜨지 않는다.
실수 뒤의 f는 3.14를 float형으로 지정하겠다는 뜻이다. 이런 식으로 상수의 자료형을 임의로 변경할 수 있다.
2) 심볼릭 상수 (symbolic) - 이름 있는 상수
- 말 그대로 이름이 있는 상수 [ const 키워드 ]
EX) const 키워드로 상수 지정하기
const int A = 10;
정말 초 간단하다. 앞에 const만 붙여주고 변수처럼 정의해서 사용하면은 된다.
- const가 붙으면 상수가 되기 때문에 초기화한 다른 값으로 변경하려하면은 에러가 뜨니 주의핮자. 심볼릭 상수는 대체로 대문자로 이름을 정하자. 모두의 약속~!
마음대로 정해도 되지만 남들이 보기 쉬운 프로그램을 만드는 것이 좋은 프로그램이다.
- 이름이 없는 상수. 처음에 책을 봤을 때 제목에 이런 식으로 나와 이게 뭔가 했었다.
하지만 조금 읽어보니 어처구니가!!
EX) int a = 10 + 12;
a가 변수면은 10과 12는 리터럴 상수이다.
- _ - 어떤가 참으로 쉽지않은가? 게다가 위의말대로 이름이 없다.
책을 읽으면서 이런 것을 왜 이름까지 리터럴 상수라고 지어서 이렇게 분류까지 해놨을까?
사람들이 다 이유가 있어서 분류를 해놓은 것이니 우리는 만들어준 함수 조용히 가져다가 잘 쓰면 된다.
그래도 이렇게 쿡쿡 질러놓고 설명 안하기는 찝찝하니...
일반적으로는 변수를 만들때만 메모리가 설정(?ㄱ- 적당한 말이 만 떠오른다.) 된다고 생각하는데
연산을 위해 상수를 사용하면 상수도 메모리의 올라가게 되어있다.
연산을 위해서 상수가 메모리의 올라가는 것은 당연한 일!
만약
int a = 10 + 12;
이런 연산식이 있다면 22라는 답을 구하기 위해 10과 12를 메모리의 올려서 결과값을 구한다는것이다.
int a = 10 + 12;
이런 연산식이 있다면 22라는 답을 구하기 위해 10과 12를 메모리의 올려서 결과값을 구한다는것이다.
그거 당연한거 아니야?! 라고 할 사람도 분명있겠지만 분명 처음 알게된 사람도 있을것이다 -ㅂ-!!
▣ 리터럴 상수의자료형
int a = 10; // 10은 int형으로 자동 인식된다.
float b = 3.14; // 3.14는 double형으로 자동인식된다.
char c = 'X'; // X는 char형으로 자동인식된다.
- 이런 식으로 초기화를 하더라도 상수는 메모리에 올라가야 하므로 자동적으로 자료형이 정진다.
고로 정수형의 자료형은 int 실수의 기본 자료형은 flaot 문자의 기본 자료형은 char인 것이다.
** 상수의 값이 너무커 기본자료형의 담을 수 없다면 그 자료형보다 더 큰 자료형으로 자동으로 변견된다는 사실!! (음 뭐 이렇게 깊이 파고 들 필요는 없겠지만 알면 좋다~)float b = 3.14; // 3.14는 double형으로 자동인식된다.
char c = 'X'; // X는 char형으로 자동인식된다.
- 이런 식으로 초기화를 하더라도 상수는 메모리에 올라가야 하므로 자동적으로 자료형이 정진다.
고로 정수형의 자료형은 int 실수의 기본 자료형은 flaot 문자의 기본 자료형은 char인 것이다.
가끔 상수의 자료형 때문에 컴파일 중 경고가 뜨기도 하는데
EX) float a = 3.14;
이런 식으로 값을 초기화 하면은 경고가 뜬다.
초기화를 할 경우 값이 잘릴수도 있다는 경고인데 경고가 뜨는 이유는 바로 위에서 설명했다.
3.14를 담을 a는 float형이다. 하지만 3.14는 double형이다.
float는 double형보다 작기때문에 값이 잘릴 수 있다고 경고가 뜨는 것이다.
올바른 EX)
float a = 3.14f;
이런 식으로 정의 해 주면은 경고가 뜨지 않는다.
실수 뒤의 f는 3.14를 float형으로 지정하겠다는 뜻이다. 이런 식으로 상수의 자료형을 임의로 변경할 수 있다.
정수 사용하기(EX)
u or U unsigned int 222u or 222U
l or L long 222l or 222L
lu or LU unsigned iong 222lu or 222LU
실수
f or F float 2.33f or 2.33F
l or L long double 2.33l or 2.33L
u or U unsigned int 222u or 222U
l or L long 222l or 222L
lu or LU unsigned iong 222lu or 222LU
실수
f or F float 2.33f or 2.33F
l or L long double 2.33l or 2.33L
2) 심볼릭 상수 (symbolic) - 이름 있는 상수
- 말 그대로 이름이 있는 상수 [ const 키워드 ]
EX) const 키워드로 상수 지정하기
const int A = 10;
정말 초 간단하다. 앞에 const만 붙여주고 변수처럼 정의해서 사용하면은 된다.
- const가 붙으면 상수가 되기 때문에 초기화한 다른 값으로 변경하려하면은 에러가 뜨니 주의핮자. 심볼릭 상수는 대체로 대문자로 이름을 정하자. 모두의 약속~!
마음대로 정해도 되지만 남들이 보기 쉬운 프로그램을 만드는 것이 좋은 프로그램이다.
** 심볼릭 상수를 선언할때 주의할 점이 있는데 선언과 초기화를 꼭 동시의 해 주어야한다.
const int A ;
A = 10;
이런식으로 해주면은 에러메세지가 뜬다.
그 이유는 A를 선언한 순간 초기화해 주지 않았다고 해서 A에 아무값도 안들어 있는 것이 아니다.
A에는 쓰레기 값이 들어가 있기 때문에 이미 쓰레기 값으로 초기화가 된것이다.
그래서 아래에 A = 10; 은 초기화가 아닌 값의 변경으로 인식하기 때문에 에러가 나는 것이다.
const int A ;
A = 10;
이런식으로 해주면은 에러메세지가 뜬다.
그 이유는 A를 선언한 순간 초기화해 주지 않았다고 해서 A에 아무값도 안들어 있는 것이 아니다.
A에는 쓰레기 값이 들어가 있기 때문에 이미 쓰레기 값으로 초기화가 된것이다.
그래서 아래에 A = 10; 은 초기화가 아닌 값의 변경으로 인식하기 때문에 에러가 나는 것이다.