들어가며...
C언어의 구성요소에는 크게 "식별자", "키워드", "연산자", "상수", "분리자", "주석" 등이 있습니다. 사실 이는 C언어에만 존재하는 것이 아니라 모든 언어에 해당하는 요소입니다. 몇몇 요소의 경우는 언어마다 세부내용에 있어 조금씩 상이하지만 그 요소의 존재의미는 동일하다고 생각하시면 됩니다.
키워드 (Keyword)
C언어(프로그래밍 언어)에서 미리 사용되어지고 있는 식별자라고 생각하면 됩니다. 다른말로는 예약어라고도 합니다.
● C언어의 키워드
break | else | long | switch |
case | enum | register | typedef |
char | extern | return | union |
const | float | short | unsigned |
continue | for | signed | void |
default | goto | sizeof | volatile |
do | if | static | while |
● 키워드를 식별자로 사용했을 경우의 에러 예시
식별자 (Identifier)
사용자가 직접 생성하는 단어로 변수명, 함수명등의 이름이 그것입니다. 식별자를 정의할 때 주의할 점은 다음과 같습니다.
- 키워드를 식별자로 사용하면 안됩니다.
- 식별자를 정의할 때 사용할 수 있는 문자로는 "알파벳", "숫자", "_" 로만 구성하여야 합니다. 즉, 한글, 언더바('_')를 제외한 특수문자 및 공백문자등을 식별자에 사용할 수 없습니다.
- 식별자의 첫 문자는 알파벳과 언더바('_')만 사용할 수 있습니다. 숫자는 식별자의 첫 문자로 사용할 수 없습니다.
- C언어는 대소문자를 구분합니다. 따라서 "name", "Name", "naMe" 문자열들은 모두 다른 식별자로 인식합니다. 하지만 이와 같은 식별자 정의는 딱 봐도 헷갈리기 쉽습니다. 따라서 나름의 규칙을 만들어 작명하는 습관이 중요하며 일관성을 유지하면서 식별자를 정의하는 것이 중요합니다.
● 잘못된 식별자 정의
1
2
3
4
5
6
7
8
9
10
11
|
#include <stdio.h>
void main() {
//< 키워드를 식별자로 사용할 수 없다.
int int = 0;
//< 알파벳, 숫자, 언더바('_') 로만 구성하여야 한다.
int my-age = 0;
//< 첫 문자는 알파벳, 언더바('_')만 사용할 수 있다.
int 1Age = 0;
}
|
cs |
● Carmel Case
변수명이나 함수명을 작명할 때 사용하는 여러 규칙 중 하나로 요즘은 다수의 사용자가 사용하고 있는 표기법입니다. 간략하게 설명하면 "식별자의 첫글자는 소문자로 시작하고 단어단위로 작성하며 첫단어 이후의 단어의 첫글자는 대문자로 표기하는 방법을 의미합니다.
● 팁 : 변수명 또는 함수명을 정의할 때는 최대한 해당 값이 무엇을 수행하고자 하는 것인지 그 의미를 알 수 있도록 구체적으로 짓는 것이 좋습니다. 혼자 공부하거나 개발할 때는 자신만 그 코드를 이해해도 무방하겠지만 결국 자신이 개발한 코드를 다른 누군가가 볼 수도 있다는 전제하에 개발하는 것이 중요한 덕목 중 하나라고 생각합니다. 주석과 변수명 함수명만 잘 정의하고 정리해도 전체적인 흐름만 설명해 주면 누구라도 쉽게 이해할 수 있는 코드가 좋은 코드일 것입니다.
연산자 (Operator)
연산자라 하면 기본적으로 산술연산자(더하기, 빼기, 곱하기, 나누기)만 생각할 수 있으나 논리, 관계, 할당등의 표현식도 연산자라고 합니다.
- 산술연산자 : 일반적인 수식 계산에 사용하는 연산자입니다. 더하기('+'), 빼기('-'), 곱하기('*'), 나누기('/')가 있습니다.
- 논리연산자 : AND('&&'), OR('||'), NOT('!') 를 논리연사자라 합니다. 쉬운듯 어려운 것이 논리 연산자라고 생각합니다. 전자공학에서 회로도를 설계할 때도 사용하며 대부분은 수학시간에 처음 배우게 되는 (집합등에서) 연산자일 것입니다.
- 관계연산자 : ~보다 크다, 작다, 같다, 같지 않다를 표현할 때 사용하는 연산자입니다. (>, >=, <, <=, ==, !=)
- 할당연산자 : A에 B를 대입할 때 (할당할 때) 사용하는 연산자입니다. 예를 들어 정수 a라는 변수에 숫자 1을 할당할 때 "int a = 1"라고 표현합니다.
본 포스팅에서는 간단히 어떤 것이 있다 정도로만 살펴보시고, 추후 연산자에 대해 포스팅할 때 자세한 내용을 살펴보도록 하겠습니다.
상수 (Constant)
말 뜻 그대로 변하지 않는 변수라고 생각하면 됩니다.
코딩을 하다보면 절대 변하지 않거나 공통으로 사용할 요량으로 값을 정의하고 여기 저기서 참조하여 사용해야 할 경우가 생깁니다. 이럴 때마다 변수에 해당 값을 정의하고 대압하여 사용한다면 메모리의 낭비가 발생할 것이고, 혹시 해당 값이 변경된다면 모든 코드에서 정의한 내용을 모두 찾고, 변경해야 하는 번거로움이 생기게 됩니다.
이를 위해 변하지 않거나 코드의 여기저기서 참조하여 공통으로 사용할 값이 있으면 "상수"로 정의하여 사용하는 것이 좋으며 이러한 상수의 정의를 C언어에서는 보통 전처리문 #define을 사용하여 정의합니다.
● 원주율(π)을 상수로 정의한 예시
1
2
3
4
5
6
7
8
9
10
|
#include <stdio.h>
//< 원주율을 상수로 정의
#define PI = 3.1415926535
void main() {
int circumference = 0;
//< 반지름이 5인 원의 둘레를 구한다.
circumference = 2 * 5 * PI;
}
|
cs |
분리자
단어들의 뜻을 좀 더 명확하게 하기 위해 사용하는 요소입니다. 쉼표(','), 따옴표(""), 세미콜론(';'), 괄호('()') 등이 있습니다.
1
2
3
4
5
6
7
8
9
10
11
|
#include <stdio.h>
int main(void) {
//< 세미콜론 : 모든 문장의 끝에 반드시 세미콜롬(';')을 표기하여야 한다.
//< 쉼표 : 동일한 타입의 변수는 쉼표로 여러개 정의할 수 있다.
int a, b;
//< 큰따옴표 : 문자열을 정의할 때는 큰따옴표로 묶어준다.
char name[] = "u2ful";
//< 괄호 : 연산 시 우선순위를 정할 때나 그룹으로 묶어 구분 짓고 싶을 때 사용한다.
int x = (10 + 5) * 2;
}
|
cs |
주석
주석은 내가 구현한 코드가 무엇을 하기 위함인지를 설명하기 위한 설명글이라 생각하시면 됩니다. 타인이 내 코드를 보게될 때 이해를 돕기 위함도 있고 본인이 구현한 코드이지만 시간이 지나 무엇을 구현한 것인지 잊어버렸을 때도 주석은 많은 도움이 됩니다. 보통의 언어들과 주석을 의미하는 식별자는 동일하며 한줄의 주석은 "//"을 사용하고 여러줄의 주석을 달 때는 "/* comment */"을 사용합니다.
팁 : 주석을 절대 이전에 구현했던 코드를 제거하는 용도로 사용하지 마세요!!! 보통의 초심자들이 구현한 코드를 수정할 때 이전에 구현한 내용을 다시 쓸 수도 있다는 생각으로 기존의 코드를 주석처리 하곤 합니다. 하지만 이는 나쁜 습관이라는 생각입니다. 요즘은 더더욱 형상관리 툴들이 (git, svn) 잘 나와 있어 이전에 구현했던 내용이 정말 추후에 다시 사용될 수도 있다 판단되면 형상관리 툴을 사용하여 별도로 백업 해두시는 편이 낫습니다. 코드 중간 중간에 주석처리된 코드들은 타인이 봤을 때 지저분하기도 하고 시간이 지나면 이 주석처리된 코드가 무엇을 의미하는 지 본인도 잊어먹게 됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
|
#include <stdio.h>
int main(void) {
// 한줄 주석문
int a = 0;
/*
여러 라인에 주석을 달고자 할 경우
에는 이와 같이 사용하면 된다.
/*
}
|
cs |
마치며...
이번 포스팅은 길게 썼지만 대부분의 프로그래밍 언어에서도 비슷하게 사용되는 개념이라 한번 익혀두시면 추후에 새로운 프로그래밍 언어를 배우시더라도 다시 학습하지 않아도 되는 내용입니다. 가볍게 읽으시고 실제 코딩을 하면서 해당 구성요소들 중 변수명을 정의하거나 주석을 다는 등의 좋은 습관을 들이시는게 더욱 중요하다고 생각합니다.
다음 포스팅은 C언어의 아주 기본적인 구조에 대해서 살펴보도록 하겠습니다.
U2ful은 ♥입니다. @U2ful Corp.
'Programming > C언어 초급' 카테고리의 다른 글
C언어 초급) 02.변수 : 02. 입출력 (0) | 2020.05.25 |
---|---|
C언어 초급) 02.변수 : 01. 변수의 정의 (0) | 2020.05.22 |
C언어 초급) 01.들어가며 : 04. 프로그램의 구조 (0) | 2020.05.21 |
C언어 초급) 01.들어가며 : 02. "Hello U2ful" (0) | 2019.10.01 |
C언어 초급) 01.들어가며 : 01. 개발환경 구축하기 (0) | 2019.09.30 |