이번 글은 지난 글에 비해 분량이 짧고 쉬어가는 글이 되겠군요.
변수의 이름 규칙만을 따로 포스팅하게 되었습니다.
다음 글은 외울 게 많을 예정입니다.
int, double, char 외에 더 다양한 자료형들을 살펴볼 거거든요.
폭풍전야의 고요함을 만끽하시기 바랍니다.
변수의 이름 작명에는 규칙이 있어서, 불가능한 이름들이 있습니다.
변수의 이름을 구성할 수 있는 문자들
변수의 작명에는 일반적으로 알파벳, 숫자, _(언더바)와 $(달러 기호)를 사용할 수 있습니다.
그러나 구현 환경에 따라서 더 다양한 문자들이 가능한데요.
우리가 쓰는 Visual Studio에서는 한글도 가능합니다.
그래도 가급적 알파벳, 숫자, 그리고 _(언더바)만 이용해주시기 바랍니다.
다들 모국어로 된 변수 이름을 사용하면, 나중에 자료를 찾을 때 인도네시아어 변수를 접하게 되고,
같이 협업하게 된 개발자가 아랍어 변수를 사용하는 광경을 목격하게 되실 겁니다.
그리고, 애초에 알파벳이 더 편한 부분이 있습니다.
프로그래밍 언어와 이질감이 없고, 이미 여러 코딩 관습이 알파벳과 밀착되어있기 때문입니다.
변수의 이름으로 불가능한 경우들
위에서 소개한 알파벳, 숫자, _(언더바)로 조합된 이름인데도 불구하고 변수의 이름으로 불가한 것들도 있습니다.
아래 두 가지 경우중 하나인데요.
- 프로그래밍 언어의 예약어(keyword)인 경우 ex) int, char, double, void, return
- 첫 글자가 숫자인 경우 ex) 1abc, 234567, 2022_anniversary, 7_7
이름이 예약어와 같은 경우에는 변수의 이름인지, 예약어인지 구분하기 어렵기 때문에 불가능하도록 되어있고,
첫 글자가 숫자인 경우에는 우리가 작성한 코드를 컴퓨터가 기계어로 번역하는 과정의 편의를 위해 불가능하도록 되어있습니다. (만약 가능하게 된다면 숫자로 시작하는 게 리터럴 상수인지 변수의 이름인지 구분하기 어렵고, 숫자의 뒤에 붙은 것이 접미사인지 이름의 일부분인지도 구분하기 어렵습니다. 아직은 몰라도 되는 이야기)
변수의 이름으로 가능한 예시들과 불가능한 예시들을 골라서 모아보겠습니다.
[가능한 예시]
- num
- Dog
- _123
- SoundComponent
- sound_component
- _is_smart_pointer
- cake4you
- anniversary_2022
- Int
- Return
[불가능한 예시]
- 1abc
- 234567
- 2022_anniversary
- 7_7
- 2Handed
- noexcept
- ^iter
- -num
- int
- return
^iter과 -num은 왜 불가능할까요?
예약어도 아니고 숫자로 시작하지도 않는데.
위에서 말씀드렸듯이, 변수의 이름에 허용되는 문자는 알파벳, 숫자, _(언더바), $(달러 기호) 뿐이기 때문에 그 외의 특수문자가 들어간 이름은 불가능합니다.
간혹 *를 붙이고서는, "이건 되는데요?" 하시는 분들이 있을 수 있어요.
축하드립니다. 포인터라고 불리는 무시무시한 친구를 선언하셨습니다.
어찌됐건, 변수의 이름 맨 앞에 이상한 특수문자를 붙일 일은 실제로 없으니,
- 프로그래밍 언어의 예약어(keyword)인 경우
- 첫 글자가 숫자인 경우
이 두 경우만 잘 기억해주시면 되겠습니다.
사실 이 두 경우도 잘 없을 겁니다.
실제로 확인해보기
이 과정, 이젠 별 다른 설명 없어도 할 수 있겠죠?
기존 소스를 현재 프로젝트에서 제거하고, 새로운 C 소스를 추가하는 과정입니다.
이름은 이번 글의 제목인 "2. 변수의 이름 규칙.c"라 지었습니다.
앞으론 이 과정도 여러분들이 알아서 하실 수 있으리라 믿고 글에 담지 않을 예정입니다.
#include <stdio.h>
int main()
{
// [변수의 이름으로 불가능한 것들]
/*
int int;
int return;
int 1abc;
int 7_7;
int ^^;
int -num;
*/
// [변수의 이름으로 가능한 것들]
int Int;
int Return;
int abc;
int _;
int anniversary_2022;
int _1_;
return 0;
}
|
cs |
//와 /**/는 주석 기호인데요.
코드나 알고리즘에 대한 설명, 함수 명세와 사용법, 간단한 메모 등을 적는 데에 사용합니다.
//는 한 줄 단위 주석으로, //의 오른쪽에 있는 내용을 주석 처리합니다.
/**/는 여러 줄 단위 주석으로, /*로 열고 */로 닫기 전까지의 내용을 주석 처리합니다.
주석으로 쓰인 내용은 실제 프로그램에 포함되지는 않습니다.
오로지 사용자의 편의를 위한 텍스트가 된다고 보시면 되겠습니다.
/* */로 주석 처리된 부분의 주석을 해제하면 (/*, */를 지우면)
해당 내용 전부 빨간 줄이 쳐지는 걸 볼 수 있을 겁니다.
처음엔 시뻘건 게 여러 개여서 손발이 덜덜 떨리고 심장이 두근댈 수도 있는데,
빨간 줄은 우리가 틀린 곳이 어딘지 확실하게 알려주는 좋은 친구이니 친해지실 필요가 있습니다.
마우스를 갖다 대면 설명을 해주죠.
그 부분만 고치면 바로 문제가 해결된다는 소리니, 어디서부터 잘못된 건지 모르는 상태보다 훨씬 좋습니다.
분명 짜증나긴 하지만 그래도 안 나오는 것보다는 나와줬으면 좋겠는 권태기의 애인 같은 존재죠.
int int;
int return;
위 둘은 언어의 예약어이기 때문에 불가능한 이름입니다.
Visual Studio에서는 변수의 이름이 아니라 예약어라고 판정하므로 텍스트의 색도 변수의 이름에 해당하는 색이 아니라 각 예약어에 해당하는 색일 것입니다.
int 1abc;
int 7_7;
위 둘은 숫자로 시작하기 때문에 불가능한 이름입니다.
Visual Studio에서는 숫자가 나온 부분을 리터럴 상수(아직 몰라도 됩니다.)라고 판정하므로 마찬가지로 변수의 이름에 해당하는 색이 아니라 리터럴 상수에 해당하는 색일 것입니다.
int ^^;
int -num;
위 둘은 허용되지 않는 문자로 시작하기 때문에 불가능한 이름입니다.
음... 그러나 ^와 - 모두 연산자로 존재하기 때문에 Visual Studio는 피연산자 없이 연산자만 썼다고 생각하겠네요.
실행되는 내용은 없겠지만 한 번 실행하면 자동으로 저장이 되니 실행 해보셔도 좋구요.
간단하게 Ctrl + S로 저장해주셔도 됩니다.
솔직히 불가능한 변수의 이름들을 보시면 알겠지만, 굳이 이 규칙에 어긋나게 변수 작명을 할 이유가 없습니다.
조금 익숙하지 않은 예약어들로 실수를 할 수는 있는데, 그런 예약어들은 애초에 Visual Studio에서 다른 색으로 표시를 해주니까요.
여러분들이 실제 프로그래밍할 때 잘못된 변수 이름 때문에 막힐 일은 절대 절대 없습니다.
이런 걸 틀려서 온다면... 혼내줄 거야.
한 번 보고 기억하기도 쉽기 때문에, 여러모로 쉽게 소화할 수 있는 내용이었습니다.
읽어주셔서 감사합니다.
'C | C++ > C' 카테고리의 다른 글
[C] 6. printf를 좀 더 잘 써봅시다. <필드폭 및 소수점 조정, 이스케이프 문자> (1) | 2022.07.05 |
---|---|
[C] 5. 입출력은 프로그램의 근본입니다. <printf, scanf> (0) | 2022.07.05 |
[C] 4. 변수의 최댓값을 넘기면 무슨 일이 일어날까요? <오버플로우, 언더플로우, 랩 어라운드> (0) | 2022.07.03 |
[C] 3. 좀 더 다양한 종류의 변수를 선언해봅시다. <다양한 자료형> (0) | 2022.06.25 |
[C] 1. 처음은 변수를 만들어보는 것으로 시작합시다. <변수 선언, 초기화> (0) | 2022.06.10 |