안녕하세요 피터입니다.

오늘은 C언어의 상수에 대해서 알아보겠습니다.


1. 상수란 무엇인가?

상수(Constant)란 프로그램이 실행되는 동안 '값이 고정되어 변경할 수 없는 메모리 공간'을 의미합니다. 

변수처럼 정의해서 사용할 수 있습니다. 

기본적으로 int나 char 와 같은 C언어 표준 자료형들은 모두 상수가 될 수 있습니다. 그렇기 때문에 상수는 한번 정의한 이후에 값을 변경할 수 없도록 제한한 변수와 의미가 같다고 볼 수 있습니다. 

문자열 그 자체가 값을 나타내는 것을 리터럴 상수(Literal constant)라고 하는데 줄여서 리터럴(Literal)이라고 부르기도 합니다. 


2. 상수를 정의하는 방법

상수를 정의하는 방법에는 두 가지 방법이 있습니다.

#define 전처리기를 사용하는 방법과 const 키워드를 사용하는 방법입니다.


2.1 #define 전처리기 (Preprocessor)

#define identifier value


#define으로 전처리기 지시자를 통해 상수를 정의할 수 있습니다. 

이렇게 정의된 상수는 전처리 단계에서 value로 치환된 이후 컴파일됩니다. 

#include <stdio.h>

#define LENGTH 10   
#define WIDTH  5
#define NEWLINE '\n'

int main() {

   int area;  
  
   area = LENGTH * WIDTH;
   printf("value of area : %d", area);
   printf("%c", NEWLINE);

   return 0;
}

2.2 const 키워드 (Prefix)

const 키워드를 통해 변수를 선언할 때 상수로 지정할 수 있습니다.

const type variable = value;
이렇게 선언된 변수는 값을 변경할 수 없습니다.

실제로 참조할 때는 #define 사용할 때와 차이가 없습니다.


#include <stdio.h>

int main() {

   const int  LENGTH = 10;
   const int  WIDTH = 5;
   const char NEWLINE = '\n';
   int area;  
   
   area = LENGTH * WIDTH;
   printf("value of area : %d", area);
   printf("%c", NEWLINE);

   return 0;
}

3. 리터럴 상수

리터럴 상수는 소스 코드상의 문자열이 그 자체로 값을 나타내는 것을 말합니다. 이 값들은 변수에 대입을 하거나 조건문에 비교값으로 사용할 수 있습니다.

3.1 정수 리터럴 (Integer Literal)

정수 리터럴은 prefix를 이용하여 10진수, 16진수, 8진수 등의 상수를  표현할 수 있습니다.
0x 로 시작하는 정수 리터럴은 16진수를 나타내며, 0 으로 시작하는 정수 리터럴은 8진수입니다.

sufix로 L이나 U를 사용할 수 있습니다.
L은 long, U는 unsigned 를 나타냅니다.

85         /* decimal */

0213       /* octal */

0x4b       /* hexadecimal */

30         /* int */

30u        /* unsigned int */

30l        /* long */

30ul       /* unsigned long */


212         /* Legal */

215u        /* Legal */

0xFeeL      /* Legal */

078         /* Illegal: 8 is not an octal digit */

032UU       /* Illegal: cannot repeat a suffix */


3.2 실수 리터럴 (Floating-point Literal)

3.14159       /* Legal */

314159E-5L    /* Legal */

510E          /* Illegal: incomplete exponent */

210f          /* Illegal: no decimal or exponent */

.e55          /* Illegal: missing integer or fraction */


3.3 문자 상수 (Character Constant)

' ' 로 감싸여진 단일문자를 문자 상수라고 합니다. ' ' 안에는 단일 문자만 올 수 있습니다. 문자가 2개 이상이면 문자열이 되기 때문에 " " 로 감싸야 합니다.

escape 문자인 '\' 가 붙은 특수 문자도 올 수 있습니다. 

주로 사용하는 '\t' 는 탭문자, '\n' 은 개행문자에 해당합니다.

'x'             /* Legal */

'\n'            /* Legal */

'\t'            /* Legal */


'xy'         /* Illegal: string */


3.4 문자열 리터럴 (String Literal)

" " 로 감싸여진 구문을 문자열 리터럴이라고 합니다. 
하나의 문자열이 너무 긴 경우 아래와 같이 escape 문자인 \ 를 사용해서 여러 행에 걸쳐 작성할 수 있습니다. 
(개행문자를 \ 를 통해 무시하게 되는 원리입니다)
또한 " " 로 감싸여진 문자열을 여러개를 나열하면 하나의 문자열로 인식합니다.
 

"hello, dear"


"hello, \

dear"


"hello, " "d" "ear"



여러분의 댓글은 저에게 크나큰 힘이 됩니다. 오류 및 의견 주시면 감사하겠습니다.

-Peter의 우아한 프로그래밍

블로그 이미지

친절한 Peter Ahn

IT 정보 공유, 프로그래밍 지식 공유

댓글을 달아 주세요


안녕하세요^^ 피터입니다.


앞서 강좌에서 배웠던 변수를 C언어 프로그래밍에서 다루려면 우선 C언어에서 제공되는 자료형을 알아야 합니다.

오늘은 C언어의 자료형(DataType)에 대해 알아보겠습니다.


1. 자료형(DataType) 종류

C언어의 자료형은 아래와 같이 분류할 수 있습니다.

1.1 기본형 (Basic Type)

1.1.1 정수형 (Integer Type)

정수형(Integer Type)에는 int, short, long, char 등이 있습니다.  
소수점이 없는 정수를 표현할 때 사용됩니다. 

맨앞 1 bit를 부호비트로 사용하는데 부호비트도 숫자 영역으로 쓰면 양수만 표현할 수 있는 대신 더 많은 큰 숫자를 표현할 수 있습니다. 이렇게 부호비트까지 숫자로 쓰려면 앞에 unsigned를 붙인 자료형을 사용하면 됩니다.

C언어에서 정수형 타입의 한계값은 다음과 같이 limits.h 표준 헤더파일에 정의되어 있습니다.
상수의미
CHAR_BIT비트 필드가 없는 가장 작은 변수의 비트 수입니다.8
SCHAR_MINsigned char 형식 변수의 최소값입니다.–128
SCHAR_MAXsigned char 형식 변수의 최대 값입니다.127
UCHAR_MAXunsigned char 형식 변수의 최대값입니다.255(0Xff)
CHAR_MINchar 형식 변수의 최소값입니다./J 옵션이 사용된 경우, –128; 0
CHAR_MAXchar 형식 변수의 최대값입니다./J 옵션이 사용된 경우, –127; 255
MB_LEN_MAX여러 문자 상수에서의 최대 바이트 수입니다.5
SHRT_MINshort 형식 변수의 최소값입니다.–32768
SHRT_MAXshort 형식 변수의 최대 값입니다.32767
USHRT_MAXunsigned short 형식 변수의 최대 값입니다.65535(0xffff)
INT_MINint 형식 변수의 최소값입니다.–2147483648
INT_MAXint 형식 변수의 최대값입니다.2147483647
UINT_MAXunsigned int 형식 변수의 최대값입니다.4294967295(0xffffffff)
LONG_MINlong 형식 변수의 최소값입니다.–2147483648
LONG_MAXlong 형식 변수의 최대값입니다.2147483647
ULONG_MAXunsigned long 형식 변수의 최대값입니다.4294967295(0xffffffff)
_I64_MIN__int64 형식의 변수에 대한 최소값입니다.-9223372036854775808
_I64_MAX__int64 형식의 변수에 대한 최대값입니다.9223372036854775807
_UI64_MAXunsigned __int64 형식의 변수에 대한 최대값입니다.

18446744073709551615(0xffffffffffffffff)

[정수 제한 (출처: MSDN)]

1.1.2 실수형 (Floating-Point Type)

실수형 자료형에는 IEEE 754의 Single Precision 규격을 따르는 float type,  Double Precision 규격을 따르는 double type 등이 있습니다. 
(IEEE 754는 컴퓨터에서 부동소수점을 표현하는 표준 규약입니다.)

실수형 자료형은 모두 부호비트를 사용하기 때문에 unsigned type을 지원하지 않습니다. 
C언어에서 실수형 타입의 한계값은 다음과 같이 float.h 표준 헤더파일에 정의되어 있습니다.

상수의미
FLT_DIG DBL_DIG LDBL_DIG소수 자릿수가 q인 부동 소수점 수가 부동 소수점 표현으로 반올림되고 정밀도의 손실 없이 다시 복원될 수 있는 자릿수 q입니다.6 15 15
FLT_EPSILON DBL_EPSILON LDBL_EPSILONx + 1.0이 1.0과 같지 않은 가장 작은 양수 x입니다.1.192092896e–07F 2.2204460492503131e–016 2.2204460492503131e–016
FLT_GUARD0
FLT_MANT_DIG DBL_MANT_DIG LDBL_MANT_DIG부동 소수점 유효 숫자에서 FLT_RADIX로 지정된 기수의 자릿수입니다. 기수는 2입니다. 따라서 이러한 값이 비트를 지정합니다.24 53 53
FLT_MAX DBL_MAX LDBL_MAX표현 가능한 최대 부동 소수점 수입니다.3.402823466e+38F 1.7976931348623158e+308 1.7976931348623158e+308
FLT_MAX_10_EXP DBL_MAX_10_EXP LDBL_MAX_10_EXP10을 해당 수만큼 거듭제곱한 값이 표현 가능한 부동 소수점 수인 최대 정수입니다.38 308 308
FLT_MAX_EXP DBL_MAX_EXP LDBL_MAX_EXPFLT_RADIX를 해당 수만큼 거듭제곱한 값이 표현 가능한 부동 소수점 수인 최대 정수입니다.128 1024 1024
FLT_MIN DBL_MIN LDBL_MIN최소 양수 값입니다.1.175494351e–38F 2.2250738585072014e–308 2.2250738585072014e–308
FLT_MIN_10_EXP DBL_MIN_10_EXP LDBL_MIN_10_EXP10을 해당 수만큼 거듭제곱한 값이 표현 가능한 부동 소수점 수인 최소 음의 정수입니다.–37
–307
–307
FLT_MIN_EXP DBL_MIN_EXP LDBL_MIN_EXPFLT_RADIX를 해당 수만큼 거듭제곱한 값이 표현 가능한 부동 소수점 수인 최소 음의 정수입니다.–125
–1021
–1021
FLT_NORMALIZE0
FLT_RADIX _DBL_RADIX _LDBL_RADIX지수를 표현하는 기수입니다.2 2 2
FLT_ROUNDS _DBL_ROUNDS _LDBL_ROUNDS부동 소수점 더하기의 반올림 모드입니다.1 (near) 1 (near) 1 (near)
[부동 제한 (출처: MSDN)]


1.2 열거형 (Enumerate Type)

열거형은 int type과 같은 크기를 갖는 자료형입니다. 
주로 코드의 가독성을 높이기 위해 상수에 의미있는 별명을 부여하거나 미리 정의된 변수의 값만 사용하도록 제한을 할 때 사용합니다.

enum { GIRL = 0, BOY = 1 }; 이런식으로 define 해서 사용하고자 하는 값을 미리 정의합니다.

1.3 Void형 (The Type void)

void형은 '값이 존재하지 않는' 것을 나타낼 때 사용하는 자료형입니다. 
다음과 같이 사용합니다.

1.3.1 함수 리턴값 (Function returns as void)

함수에서 반환하는 값이 없을 때 사용. 

void exit(int code);

1.3.2 함수 매개변수 (Function arguments as void)

함수에 입력되는 매개변수가 없을 때 사용.

int Terminate(void);

1.3.3 포인터 (Pointers to void)

포인터가 가리키는 자료형(DataType)이 정의되지 않았을 때 사용. 
예를들어 malloc 과 같은 heap 메모리 할당함수의 경우 void* 를 리턴합니다. void*로는 실제 값에 접근할 수 없기 때문에 반드시 자신이 필요한 자료형으로 캐스팅(casting) 해서 사용해야 합니다. 

 int *p = (int*)malloc(sizeof(int));

1.4 파생형 (Derived Type)

파생형(Derived Type)에 대해서는 각각의 내용이 워낙에 방대하다 보니 나중에 하나씩 따로따로 자세하게 다루도록 하겠습니다. 
지금은 그냥 이런 것들이 있다 정도만 파악해 주세요.

1.4.1 포인터형 (Pointer Type)

1.4.2 배열형 (Array Type)

1.4.3 구조체형 (Structure Type)

1.4.4 공용체형 (Union Type)

1.4.5 함수형 (Function Type)


2. 자료형별 크기

이전 강좌에서 변수의 자료형(DataType)은 메모리에 할당할 변수의 크기를 결정한다고 말씀드렸습니다.

표준 라이브러리에는 각 자료형 별로 기본적으로 메모리 크기가 정의되어 있습니다.


일부 자료형의 크기는 OS의 메모리 주소 체계(32bit/64bit)에 따라 달라집니다.

이러한 차이는 로컬 환경에서 구동되는 프로그램인 경우 크게 문제될 부분은 없지만 네트워크를 통해 다른 프로그램과 통신을 하는 경우에는 문제가 생길 수 있으니 주의해야 합니다.


OS32bit64bit(windows)64bit(linux)
데이터 표현 모델ILP32 LLP64LP64
분류변수 타입size(byte)size(byte)size(byte)
정수형
char111
short int222
int444
long int448
long long888
pointer488
size_t488
실수형
float444
double888

위 표에서 보시는바와 같이 LP64 모델을 사용하는 Linux 64bit 에서는 long8byte로 확장되었습니다. 

이 부분을 꼭 기억해주세요. 

64bit OS에서는 메모리 주소를 64bit로 표현하기 때문에 주소값을 갖는 포인터(Pointer)도 8byte로 확장이 됩니다. 

64bit 환경에서 구동되는 프로그램을 개발할 때 주의해야 할 부분에 대해서는 나중에 자세히 다루도록 하고 본 강좌에서는 ILP32 모델 기준으로 설명드리겠습니다.


참고사항

  • ILP32: Int, Long, Pointer를 32bit로 표현하는 데이터 표현 모델
  • LLP64: Long Long, Pointer를 64bit로 표현하는 데이터 표현 모델
  • LP64: Long, Pointer를 64bit로 표현하는 데이터 표현 모델


여러분의 댓글은 저에게 크나큰 힘이 됩니다. 오류 및 의견 주시면 감사하겠습니다.

-Peter의 우아한 프로그래밍


블로그 이미지

친절한 Peter Ahn

IT 정보 공유, 프로그래밍 지식 공유

댓글을 달아 주세요


안녕하세요 피터입니다.

오늘은 프로그래밍에서의 변수에 대해 알아보겠습니다. 



1. 변수는 무엇인가?

우선 프로그래밍을 할 때 변수라는 것이 왜 필요한지부터 짚어볼 필요가 있습니다.


여러분들이 계산기로 통장에 들어올 실제 월급을 계산해본다고 가정해보겠습니다.


우선 기본급여에 각종 수당을 더하고 보너스(!)도 더해 총 급여를 구합니다.

그리고 급여에 따른 소득세와 4대보험료 등을 더해 총 세금을 구합니다.

이제 총 급여에서 총 세금을 빼면 내 통장에 들어올 실제 월급을 구할 수 있겠죠.


이 과정을 계산기로 하다 보면 총 급여나 총 세금 등 여러 값들을 더해서 구한 중간 값을 어딘가 적어놓지 않으면 잊어먹어서 다시 구해야 할 때가 종종 발생합니다.


프로그램을 개발할 때에도 마찬가지입니다.

위에서 계산기로 월급을 계산할 때처럼 최종적으로 프로그래머가 원하는 기능을 수행하기 위해서는 중간 과정에서 임시로 값들을 저장할 공간이 필요합니다.  이러한 공간이 바로 변수입니다.


즉, 변수(Variable)는 프로그램이 실행되는 동안 계속해서 변하는 값을 저장하는 메모리 공간이라고 할 수 있습니다.


메모리에 필요한 공간을 할당하고 값을 저장하기 위해서는 내가 사용할 메모리 공간에 대해 컴퓨터에게 알려줄 필요가 있습니다.


내가 사용할 값의 자료형(DataType)은 무엇인지

내가 사용할 값이 유효한 범위(Scope)은 어디까지 인지

내가 사용할 메모리 공간의 이름(Name)은 무엇인지


이런 것들을 명시하여 컴퓨터가 메모리 공간을 할당하게 만드는 것을 ‘변수 선언’이라고 합니다. 

이렇게 선언한 메모리 공간. 즉, 변수에 여러분들은 아무때나 자유롭게 값을 저장하고 읽어올 수 있습니다.


2. 개념과 원리에 대한 이해가 중요합니다.

지금까지 변수의 기본 개념에 대해 알아봤는데요. 

이런 개념은 C언어 뿐만 아니라 다른 프로그래밍 언어에도 마찬가지로 적용되는 개념입니다.  


여러분들이 앞으로 프로그래밍을 공부할 때 가장 중요하게 여겨야 할 부분이 바로 이러한 개념과 원리를 이해하는 것입니다.


세상에는 수많은 프로그래밍 언어들이 산재해 있지만 대부분의 프로그래밍 언어들이 문법만 다를 뿐 기본적인 개념과 원리는 같기 때문입니다.


히딩크 감독이 한국축구 국가대표 감독이 되고 나서 가장 중점적으로 훈련을 시켰던 것이 기초 체력 훈련이었다는 것을 알고 계신가요?

전술과 테크닉도 중요하지만 종목을 떠나 모든 스포츠에서 가장 기본이 되는 것이 바로 체력이고, 체력이 뒷받침 되어야 전술과 테크닉도 힘을 발휘할 수 있다는 것을 히딩크 감독은 잘 알고 있었던 것입니다. 

당시 한국 국가대표팀 모든 선수들은 지칠줄 모르는 체력을 바탕으로 4강 신화를 이뤄냈습니다.


프로그래밍의 세계에서 기초체력은 바로 이러한 개념과 원리를 이해하는 것입니다. 

기초가 탄탄한 개발자는 새로운 언어나 기술을 습득하는데 있어서 큰 어려움이 없습니다. 여러분들도 프로그래밍을 공부하는데 있어서 이러한 점을 꼭 기억해주시기 바랍니다.



3. 그렇다면 문법은?

자, 이제 여러분들은 ‘변수’라는 개념을 이해했습니다.

그럼 이제 C언어에서는 변수를 어떻게 다루는지 문법(Syntax)를 알아보겠습니다.


아래 코드를 봐주세요.


int main(void)
{
int sum; 
sum = 17 + 32;

printf(“sum=%d\n”, sum);

return 0;
}


앞서 변수를 선언할 때 명시해야 할 항목에 대해 언급했었는데요.

기본적으로 필요한건 Scope, DataType, Name 세 가지 입니다.


int sum; 에서

int 가 DataType을 명시한 것이고, sum이 변수의 Name을 지정한 것입니다.

즉, int라는 값(Data)을 저장할 공간을 메모리상에 할당하고 sum이라고 이름을 지어준 것이죠. 

그리고 밑에 sum = 17 + 32; 에서 보시는 바와 같이 sum 이라는 이름을 통해 할당한 메모리 공간에 값을 17 + 32 에 대한 결과값을 저장할 수 있습니다.


그렇다면 Scope은 어떻게 표현한걸까요?

변수 선언의 위치를 보시면 main 함수의 body(‘{ }’로 감싸여진 부분)안에 선언되있습니다. 

그렇다는 말은 이 sum이라는 변수는 main 함수 내에서만 유효하다는 것을 알 수 있습니다. 이렇게 특정 함수 내에서만 유효한 변수를 ‘지역 변수(Local variable)’ 라고 합니다.


int sum; 
int main(void)
{
sum = 17 + 32;

printf(“sum=%d\n”, sum);

return 0;
}


위 코드처럼 변수 선언이 특정 함수 내가 아닌 외부에 위치하게 되면 main 함수가 아닌 다른 함수에서도 접근이 가능합니다. 
이처럼 어느 곳에서나 접근 가능한 변수를 '전역 변수(Global variable)'라고 합니다.


컴퓨터는 위와 같은 선언문을 해석하여 메모리에 공간을 할당합니다. 

이 때 Scope에 따라 할당되는 영역이 결정되고 DataType에 따라 할당하는 크기가 결정됩니다.

이 부분에 대한 자세한 설명은 응용프로그래밍 메모리 구조를 참조해주세요.

응용프로그램 메모리 구조


이제 여러분들은 변수에 대한 기본적인 개념을 이해하셨습니다. 

다음 시간에는 변수에 할당할 수 있는 DataType에는 어떠한 것들이 있는지 설명해드리겠습니다.



여러분의 댓글은 저에게 크나큰 힘이 됩니다. 오류 및 의견 주시면 감사하겠습니다.

-Peter의 우아한 프로그래밍

블로그 이미지

친절한 Peter Ahn

IT 정보 공유, 프로그래밍 지식 공유

댓글을 달아 주세요

안녕하세요

피터입니다. 오늘 강의에서는 C언어에 대해 차근차근 알려드리겠습니다.


현재 디바이스에 들어가는 펌웨어(firmware)나 임베디드(embedded) 분야에서 독자적인 영역을 구축하고 있으며, C언어는 현존하는 고급 언어중에 가장 컴퓨터를 잘 이해할 수 있는 언어입니다.


C언어는 오래되서 별로 배울 가치가 없다고 생각하시는 분들이 계시다면 아직 C언어를 배워야 할 이유가 충분히 있다고 말씀드리고 싶습니다. C언어는 컴퓨터를 이해하는 데 있어서 굉장히 중요한 언어이기 때문입니다.


C언어가 컴퓨터에 대해 가장 잘 이해할 수 있다는 점에 대해서는 강좌를 진행하면서 중간 중간 설명드리겠습니다.


자! 그럼 본격적으로 시작해볼까요~ 

프로그래밍 공부에서는 역시 코딩이 빠질 수 없겠죠?


우선 세계에서 가장 유명한 프로그램인 Hello world를 소개합니다.


#include<stdio.h>
int main(void)
{
	printf(“Hello world\n”);
	return 0;
}



위에서 보시다시피, 화면에 “Hello world”라는 텍스트를 출력하는 몇 줄 되지 않는 짧은 코드이지만

여기에서 우리는 많은 것을 배울 수 있습니다.



우선 #include 구문을 보시겠습니다.
이 구문은 뒤에 오는 < > 또는 “ “ 안에 있는 헤더파일(.h)을 현재 이 파일에 포함하겠다는 의미입니다.
(< > 는 주로 표준 라이브러리, “ “는 주로 사용자 정의 라이브러리를 포함시킬 때 사용됩니다)


참고로 C언어에서 #으로 시작하는 모든 구문은 전처리기 지시자를 뜻합니다.

전처리란 컴파일러가 코드를 기계어로 변환하는 작업을 하기 전에 처리하는 일련의 작업들을 말합니다. 전처리기에 대한 자세한 설명은 향후 C컴파일 과정을 설명할 때 하도록 하겠습니다.


stdioStandard Input Output의 줄임말이며 표준 입출력 라이브러리입니다. 이 라이브러리에는 printf 를 포함해서 수많은 표준 입출력 함수들이 정의되어 있습니다.


stdio.h를 포함시키는 이유는 뒤에 나오는 printf 함수를 컴파일러에게 미리 알려주기 위해서입니다.

컴파일러는 정의되지 않은 함수 호출을 문법 오류(syntax error)로 인식하기 때문이죠.

이 부분에 대해서는 나중에 함수 부분을 설명하면서 다시 자세히 말씀드리겠습니다.



이제 printf 구문을 보겠습니다.

이 부분이 바로 화면에 Hello world를 출력하는 부분이라는 것, 다들 짐작하셨나요?

printf 같은 표준 라이브러리에 포함된 함수들은 Microsoft에서 친히 상세한 사용법을 제공해줍니다.


그게 바로 Microsoft Developer Network, MSDN인데요,

구글에서 msdn printf 라고 검색해볼까요?


그럼 아래와 같은 화면이 뜨는걸 확인하시게 될텐데요, ↓




맨 첫번째 검색결과 (보라색 표시부분)를 클릭해봤더니 ↓ 아래와 같이 상세하게 함수원형에 대한 SPEC이 설명되어 있음을 알 수 있습니다.







앞으로 표준 라이브러리에 대해 궁금증이 있을때 이런식으로 msdn을 참조하시면 공부하시는데 큰 도움이 될거라 장담합니다.


설명을 보시면 입력값으로 const char* format [, argument]... 를 취하고 있습니다.

const char*는 문자열 상수를 의미하고,

바로 뒤에 나오는 … 는 가변 인자를 뜻해요. (이 부분도 뒤에서 자세히 다뤄드리겠습니다.)

printf(“Hello world\n”); 구문은 화면에 “ “ 안의 문자열을 출력한다는 의미입니다.


그리고 여기에서 '\n' 문자(한글입력체계에서 '₩n'하고 동일합니다)
개행문자를 뜻하는데 화면에 출력 할 때 이 문자를 만나면 한줄 개행을 합니다. (워드에서 Enter 키를 누른 효과라고 보시면 됩니다)

\n을 제거하고 실행하여 결과를 비교해보시면 이해가 쉽게 되실겁니다.


return 0; 구문은 main 함수를 종료하고 빠져나가면서 0이라는 결과값을 돌려준다는 뜻입니다.

main 함수는 OS(Operating System) 에서 호출되는 프로그램의 진입지점이기 때문에 main 함수가 종료되면 프로그램이 종료됩니다.


이렇게 몇 줄 안되는 짧은 코드를 살펴보았는데요. 생각보다 공부할게 많지 않나요?



앞으로의 강좌는 문법(Syntax)적인 부분 보다는

여러분들이 작성한 코드가 실제로 어떻게 컴퓨터가 이해하고 동작하는지에 대해 중점을 두고 해나갈 예정입니다.

본격적으로 다음강의부터, 보다 본질적인 원리와 개념에 대해서 쉽게!! 풀어드리도록 하겠습니다.


감사합니다.


여러분의 댓글은 저에게 크나큰 힘이 됩니다. 오류 및 의견 주시면 감사하겠습니다.

- Peter의 우아한 프로그래밍 강의

블로그 이미지

친절한 Peter Ahn

IT 정보 공유, 프로그래밍 지식 공유

댓글을 달아 주세요