C에서 상수가 뭐냐고 물어보면, 십중팔구 아래와 같이 대답한다.
맞는 말이다.
const double PAI= 3.14;
#define e (2.71)
그럼 아래 코드에서 3.14가 무엇이냐 물어보면, 주저하는 친구들이 왕왕있다.
printf("%f", 3.141);
printf("%f", 2.718);
음… 그냥 값?.. 3.14? 머지? ㅋㅋ
위 코드의 3.141도 상수이다.
이런 애들을 “리터럴 상수”라고 하는데 줄여서 “리터럴”이라고 부른다.
저 3.141은 값이 바뀌지 않기 때문이다.
그럼 위의 3.14는 뭔데? 위의 3.14도 리터럴 상수 인가? 아니다!