4강. C 언어 기본 문법 알아보기
이번 강의부터는 C 언어 프로그래밍에서 사용되는 주요 문법과 코드 작성법에 대해서 본격적으로 살펴보도록 하겠습니다.
> // 문법(Syntax): 문법은 반드시 지켜야하는 규칙이고 스타일은 프로그램 작성에 대한 가이드라인
4.1 문법
C 언어에서 문법(Syntax)은 프로그래밍 언어의 코드 작성 규칙이기에 반드시 지켜야합니다. 반드시 정해진 규칙을 따라서 코드를 작성해야 하기에 이러한 규칙은 강의 전반을 거쳐 우리가 학습할 예정입니다.
이번 장에서 우선적으로 살펴볼 문법은 다음과 같습니다.
- 출력문
- 대소문자 구분
- 문(Statement)
- 공백(White Space)
- 주석(Comment)
- 키워드(Keywords, 예약어)
4.1.1 문법, 스타일, 패턴
프로그래밍 세계에서 문법(Syntax)은 반드시 지켜야하는 규칙(Rule)이고 스타일(Style)은 프로그램 작성에 대한 가이드라인(Guideline)이며 패턴(Pattern)은 자주 사용하는 규칙과 스타일의 모음입니다. 지금부터 문법을 하나씩 정리하도록 하겠습니다. 다음 샘플 코드를 보면 C 언어는 문법에 의해서 반드시 main() 함수가 있어야 하고 하나 이상의 문(Statement)이 있어야 합니다. 하나의 문은 최소 세미콜론(;) 기호가 포함되어야 합니다. 참고로, 세미콜론(;)으로만 이루어진 다음 코드는 아무것도 출력되지 않습니다.
<코드> empty_statement.c
#include <stdio.h>
int main(void)
{
;
;
;
return 0;
}
</코드>
4.2 출력문
C 언어로 명령 프롬프트(터미널, 콘솔)에 문자열을 출력하려면 printf() 코드를 이용하면 됩니다. printf() 코드는 반드시 소괄호 기호를 사용해야 하는데 이러한 printf()를 이 강의에서는 함수라고 합니다.
다음은 이 함수에 대한 사용 예를 보여줍니다.
<코드> print_format_demo.c
#include <stdio.h>
int main(void)
{
printf("%s\n", "터미널에 출력할 내용");
return 0;
}
</코드>
<실행>
터미널에 출력할 내용
</실행>
4.2.1 줄 바꿈 기호: \n
콘솔(명령 프롬프트)에서 내용을 출력할 때 자동으로 줄바꿈을 하고자할 때에는 백슬래시(\
) 기호와 n 기호를 합친 \n
기호를 사용하여 줄바꿈을 할 수 있습니다. 이러한 특수 기호를 이스케이프 시퀀스
라고 하는데 뒤에서 다시 다루도록 하겠습니다.
<코드> new_line.c
#include <stdio.h>
int main(void)
{
printf("줄\n바꿈");
return 0;
}
</코드>
<실행>
줄
바꿈
</실행>
백슬래시(또는 역슬래시) 기호는 한글 폰트를 사용할 때는 통화량을 나타내는 원 기호(₩
)로 표시되고 영문 폰트를 사용할 때에는 백슬래시(\
)로 표시됩니다.
Visual Studio - 도구 - 옵션 - 환경 - 글꼴 및 색에서 글꼴을 변경할 수 있습니다.
<그림> Visual Studio에서 글꼴 바꾸기
4.3 들여쓰기(Indent)
프로그램 소스 코드는 가독성(readability)을 위해서 들여쓰기를 해야 합니다. 일반적으로 시작 중괄호 다음 코드는 들여쓰기를 합니다.
[그림] 들여쓰기
들여쓰기는 공백(white space) 4칸을 사용하되, 스페이스바를 4번 누르면 되는데 Visual Studio에서는 탭 옵션을 조절하면 탭(Tab) 키를 한번 누르면 기본값으로 스페이스 4칸을 들여쓰기 해줍니다. 들여쓰기를 할 때에는 4개의 스페이스로 들여쓰기를 권장합니다.
<코드> indent.c
#include <stdio.h>
int main(void)
{
printf("들여쓰기는 공백 4칸을 사용\n");
return 0;
}
</코드>
<실행>
들여쓰기는 공백 4칸을 사용
</실행>
이외에도 2칸 들여쓰기와 탭을 이용하는 들여쓰기도 있습니다. 다만, 스페이스와 탭을 함께 쓰지 않습니다. 들여쓰기로 프로그램 코드의 시작과 끝을 명확히 하는 것이 나중에 코드를 다시 살펴보거나 다른 사람이 봤을 때도 이해하기 쉽습니다.
4.3.1 참고: Visual Studio에서 들여쓰기를 위한 탭 키 입력시 자동으로 공백 삽입하기
Visual Studio는 기본으로 C 언어 코드 편집시 탭 키를 입력시 기본 4칸을 공백으로 처리합니다. 만약 이에 대한 설정을 바꾸려면 Visual Studio에서 <도구 > 옵션 > 텍스트 편집기 > C/C++ > 탭>으로 이동한 후 탭에 대한 설정을 공백 삽입으로 두고 탭 크기와 들여쓰기 크기를 정해줍니다.
[그림] Visual Studio에서 탭 키 입력시 자동으로 공백 삽입하기
주석문(코드 설명문 : Comment)
프로그래밍 언어에서의 주석문(Comment)은 코드의 설명을 담당하며, 실제 코드 실행에는 전혀 영향을 주지 않습니다. 주석문은 프로그램의 개요, 프로그램 이름, 사용자 이름, 작성일 등 필요한 부가 정보를 포함할 수 있습니다. 컴파일(Compile) 과정에서 주석문은 무시되므로, 실행 파일에는 어떠한 영향도 주지 않습니다. 주석문은 필요한 코드를 삭제하지 않고도 임시로 숨기는 용도로도 사용할 수 있습니다.
C#에서는 슬래시 기호 두 개(//
)를 사용하여 해당 줄의 나머지 부분을 주석으로 처리합니다.
아래에 제시된 예제 코드를 편집창에 입력하고 실행해보세요. 단순히 눈으로 보는 것보다는, 이 강의를 통해 수많은 cs 파일과 프로젝트를 직접 작성하고 실행해 보는 것이 훨씬 더 효과적일 것입니다. 프로그래밍 학습에서 실습은 무엇보다 중요합니다. 이에, '천 번 보는 것보다 한 번 해보는 것이 낫다'는 마인드로 학습에 임하시는 것을 권장합니다.
코드: Comment.cs
using System;
class Comment
{
static void Main()
{
// 주석문은 실행에 영향을 주지 않는 코드 설명문입니다.
Console.WriteLine("주석문");
}
}
주석문
한 줄 주석: //
C#에서의 주석문은 크게 2가지가 있으나 기본은 한 줄 주석인 //
(더블 슬래시)입니다.
더블 슬래시(//
)를 사용하는 한 줄 주석은 //
뒤에 나오는 모든 구문을 주석 처리합니다.
코드: SingleLineComment.cs
> //Console.WriteLine("현재 구문은 실행되지 않습니다.");
여러 줄 주석: /* */
슬래시 별표(/*
)로 시작해서 별표 슬래시(*/
)를 사용하는 여러 줄 주석 또는 블록 주석은 /*
와 */
사이의 모든 내용을 주석으로 처리합니다.
코드: MultiLineComment.cs
> /*
. Console.WriteLine("현재 구문은 실행되지 않습니다.");
. Console.WriteLine("현재 구문은 실행되지 않습니다.");
. */
TIP
별표(*
) 기호의 원어는 애스터리스크(asterisk
)입니다.
4.5 이스케이프 시퀀스(Escape Sequence)
C 언어 에서는 printf() 함수에서 사용할 확장 문자를 제공하는데 이를 이스케이스 시퀀스라고 합니다. 백슬래시(\
) 기호와 특정 문자를 조합하면 특정 기능을 제공합니다. 예를들어 이스케이프 시퀀스는 백슬래시(\
)로 시작하는데 '\n'
은 New Line
을 의미하여 콘솔 화면에서 줄 바꿈을 합니다.
<코드> escape_sequence.c
#include <stdio.h>
int main(void)
{
printf("안녕 \" 난 큰 따옴표야.\n");
printf("안녕 \' 난 작은 따옴표야.\n");
}
</코드>
<실행>
안녕 " 난 큰 따옴표야.
안녕 ' 난 작은 따옴표야.
</실행>
4.5.1 주요 이스케이프 시퀀스
자주 사용하는 확장 문자는 다음 표와 같습니다.
[표] 이스케이프 시퀀스
이스케이프 시퀀스 | 설명 |
---|---|
\n |
한 줄 내리기(다음 행으로 이동), newline |
\t |
탭 들여쓰기(탭 크기만큼 들여쓰기), tab |
\r |
캐리지 리턴(줄의 시작으로 이동), carriage-return |
\' |
작은따옴표 문자 하나 출력 |
\" |
큰따옴표 문자 하나 출력 |
\\ |
backslash 기초 자체를 출력 |
\b |
backspace의 약자로 커서를 뒤로 한 칸 이동 |
\a |
alarm의 의미로 삐 소리 출력 |
\0 |
문자열의 끝을 나타내는 널 종결 문자 |
4.5.2 참고: 백슬래시(역슬래시)와 원 기호 표시
프로그래밍 언어에서 사용하는 백슬래시(\
) 기호는 키보드의 원(₩
) 기호와 동일합니다.
단, 글꼴의 형태가 영문 글꼴이면 백슬래시로 표현되고 한글 글꼴이면 원 기호로 표현됩니다.
4.5.3 참고: Visual Studio에서 키보드에 없는 특수 문자 입력
키보드를 한글 입력으로 해 놓은 후 한글 자음을 누르고 나서 바로 한자 키를 누르면 각각의 한글 자음에 해당하는 특수 문자 리스트가 출력됩니다. 이 방식은 메모장에서도 동일하게 사용할 수 있습니다.
문자 상수
/*
1.7. 예제. 문자상수(Escape Sequence)
*/
#include <stdio.h>
int main(void)
{
printf("한줄 내림: \n");
printf("\n");
printf("뒤로 한칸: _\b");
printf("\n");
printf("탭키 추가: \t");
printf("\n");
printf("역슬래시 자체: \\");
printf("\n");
printf("작은따옴표: \' ");
printf("\n");
printf("큰따옴표: \" ");
printf("\n");
return 0;
}
한줄 내림:
뒤로 한칸: _
탭키 추가:
역슬래시 자체: \
작은따옴표: '
큰따옴표: "
4.6 서식 지정자 사용하기
프로그램 실행 결과를 화면에 출력할 때 사용하는 출력문 등에서는 자리 표시자(틀)라는 개념을 통해서 출력 서식을 결정할 수 있습니다. %d
, %f
, %s
형태로 자리를 만들고 뒤에서 순서대로 넘어오는 값을 출력하는 형태입니다.
이러한 것을 자리 표시자(Place Holder) 또는 서식 지정자(Format Specifier)라고 합니다.
그림: 서식 지정자
자주 사용되는 서식 지정자는 다음과 같습니다.
%d
: 부호 있는 정수%o
: 8진수%x
: 16진수
%u
: 부호 없는 정수%f
: 실수(float)%.2f
: 소수 둘째자리까지 출력%e
: 과학적(지수) 표기법으로 출력%g
:%f
와%e
서식 지정자의 결과 중 작게 표현되는 방식으로 출력
%lf
: 실수(double)%c
: 문자%s
: 문자열%p
: 포인터(Pointer)의 주소 출력%%
: 퍼센트(%) 기호 자체 출력
자리 표시자는 %d 대신에 %5d 형태를 사용해서 5칸 잡고 숫자 데이터를 출력할 수 있습니다. 기본은 오른쪽 정렬입니다. 만약 왼쪽 정렬로 왼쪽부터 값을 채우려면 %-5d 형태로 마이너스 기호를 추가하면 됩니다.
다음 코드를 살펴보세요.
<코드> print_format.c
#include <stdio.h>
int main(void)
{
printf("%d\n", 360); // 정수
printf("%f\n", 3.14); // 실수
printf("%5d\n", 360); // 5칸 잡고 오른쪽
printf("%7.3f\n", 3.14); // 7칸 잡고 소수 3자리 오른쪽 출력
printf("%-5d\n", 360); // 5칸 잡고 왼쪽
printf("%-7.3f\n", 3.14); // 7칸 잡고 소수 3자리 왼쪽 출력
printf("%+5d\n", 360); // 부호 기호 추가
printf("%+5d\n", -360); // 부호 기호 추가
printf("%+7.3f\n", 3.14); // 부호 기호 추가
printf("%05d\n", 360); // 0으로 공백 채우기
printf("%+05d\n", 360); // 부호 기호 추가 + 0으로 공백 채우기
printf("%+07.3f\n", 3.14); // 부호 기호 추가 + 0으로 공백 채우기
return 0;
}
</코드>
<실행>
360
3.140000
360
3.140
360
3.140
+360
-360
+3.140
00360
+0360
+03.140
</실행>
4.7 화면 출력 함수
C 언어 프로그래밍 학습은 화면(콘솔)에 무언가를 출력하면서 진행합니다. 이 때 화면에 출력할 때 사용되는 함수로는 printf(), putchar(), puts() 등의 함수가 자주 사용됩니다.
- printf(): 자리 표시자를 사용하여 데이터 출력
- putchar(): 작은 따옴표를 사용하여 문자 하나 출력
- puts(): 큰 따옴표를 사용하여 문자열 출력 후 줄 바꿈
TIP
putchar 함수는 일반적으로 풋차
로 발음합니다. 다만, 이 강의에서는 풋캐릭터
로 발음하겠습니다.
다음 코드를 작성 후 실행해 보세요.
<코드> output_demo.c
#include <stdio.h>
int main(void)
{
printf("%d\n", 1234); // 서식에 맞게 출력
putchar('A'); // 문자 하나 출력
putchar('\n'); // 이스케이프 시퀀스는 문자 하나로 취급
puts("C Language"); // 문자열 출력
return 0;
}
</코드>
<실행>
1234
A
C Language
</실행>
printf()는 서식 지정자를 사용하여 데이터를 출력하고, putchar()는 문자 하나를 출력합니다. 그리고 puts()은 문자열을 출력할 때 사용됩니다.
4.8 장 요약
참고로, 박용준 강사의 이 강의는 C 언어의 모든 문법을 다루지 않습니다. 반드시 알아야 하거나 한번 정도 경험해 보면 좋을 듯 한 내용들을 다룹니다.