LangDev

0, 1, 22 같은 것은 literal인가요? 아니면 constant 인가요?

김우승

Literal은 적절한 번역어가 없는 것으로 알고 있습니다. 앞으로 리터럴이라고 하겠습니다. 그리고 constant는 상수로 하죠. 예전 홍민희씨가 C의 널포인터상수와 포인터가 if, while 같은 조건식에서 쓰이는 경우를 IRC에서 말을 꺼내신 적이 있습니다. 당시 정확히 용어를 정립해서 설명하지 못한 저는 꽤 횡설수설했었죠.

지금에 와서 돌이켜 볼 때 0을 리터럴이라고 해야 하는지 상수라고 해야 하는지 모르면서 꼬임이 좀 오래 간 것 같습니다. 이 부분에 대해서 정확히 아시는 분 없으신지요. 아신다면 설명해주시면 감사하겠습니다.

제가 기억하기로는 literal은 문법적인 면을 말할 때 사용하고 constant는 의미적인 면을 말할 때 사용하던 것 같습니다. 예를 들어 3만이 literal이고 1+2는 literal이 아니겠지만 둘 다 constant expression일 수 있겠죠.

lifthrasiir

제가 요즘 듣는 수업 교재에서는 리터럴은 값 자체로 표현된 것이라 되어 있네요.

Sometimes representations of values, like the sequence of digits 42 or the representation of a character such as "a," are called constants. To distinguish them from the constants in constant declaration, we sometimes refer to these representations of values as literals.

이에 따른다면 리터럴은 문법면보다는 의미면에서 구분을 하는 것 같네요. 뭐 사실 syntax와 semantics를 정확히 구분하기 힘들긴 합니다만 말이죠.

엽우