소스코드란 프로그래머가 고급 언어로 작성한 코드다.

처음 배우는거니까 먼저 외울 건 외우자.

 

소스코드 - 전처리기 - 확장된 소스코드 - 컴파일러 - 어셈블리 코드 - 어셈블러 - 오브젝트 코드 - 링커 - 머신코드

 

컴파일이란 확장된 소스코드가 어셈블리 코드로 변환되는 과정이다.

컴파일러는 확장된 소스코드를 어셈블리 코드로 변환해주는 프로그램, 또는 소스코드로 실행파일까지 만들어 주는 프로그램이다.

일반적으로 빌드란 컴파일에서 링커(링킹)까지의 전체 과정을 빌드라고 부른다.

 

1. 기본이 되는 소스코드

//main.c

int main(void)
{


	
    return 0;
}

 

기본이 되는 소스코드를 작성해 보았다.

이미 많이 써봐서 잘 외워진 것 같다.

소스코드를 작성하면서 항상 시작이 있으면 끝이 있다는 사실을 명심하자. 열었다면 닫고, 소유했다면 돌려주자.

또한 가독성과 정리도 중요하므로 들여쓰기를 습관화하자.

 

2. printf() 함수 : 

콘솔화면에 문자를 띄우고 싶다면 printf(" "); 를 사용한다.

이 때 #include <stdio.h>를 사용한다. stdio라는 공구통을 .h로 지정한다는 의미이다. 이게 있어야 프린트함수를 활용해서 글자를 출력할 수 있다.

 

printf와 함께 백슬래시를 자주 사용하게 된다.

\ : 백슬래시. 백슬래시는 탈출 문자열이다. 백슬래시 쓰면 다시 백슬래시로 닫아줘야 한다.

\n : newline. 아래 라인으로 이동한다.

\t : tab. 탭키를 누르는 것과 같다.

\" : 쌍따옴표.

\' : 따옴표.

\\ : 역슬래시.

\% : %

 

printf("age : %d", 73); :  73을 %d 형식으로 출력 하라는 의미이다.

%d가 무엇인지? 이건 서식 지정자를 의미한다. 좀 외워야한다.

 

3. 서식 지정자 : %가 붙어있으면 서식을 지정하는 거구나~ 일단 이해하자.

%d : 10진법

%o : 8진법

%x : 16진법

%u : undesigned. 음수를 배제한다. 즉 양수로 대체한다.

%c : character. 문자로 대체한다.

%s : string. 문자열로 대체한다.

%if : 더 정학한 소수점을 표현하는 서식이다.

 

대표적으로는 이러한 것들이 있고 나머지는 그때그때 검색해서 쓰면 될 것 같다. 내가 다룰 데이터가 어떤 서식이 필요한지 잘 구분하도록 연습하자. 특히 코딩에서는 숫자 0 과 문자 "0"이 다르므로 서식을 잘 지정하는 것이 중요하다.

 

서식 지정자는 다음과 같이 응용할 수 있다.

1) 정수값만 표기하는 경우(정수 서식지정자) : %d

printf(“[%d]\n”, 65536);  -> 65536

printf(“[%07d]\n”, 65536); -> 0065536

printf(“[%7d]\n”, 65536); -> _ _65536

printf(“[%+7d]\n”, 65536); -> _ _ +65536

 

2) 소수점을 표기하고 싶은 경우(실수 서식지정자) : %f

Printf(“[%f]|n”, , 3.141592); -> 3.141592

 

4. 리터럴

 

리터럴이란 소스코드에 적힌 값 그 자체이다. 정수 리터럴, 실수 리터럴, 문자 리터럴, 문자열 리터럴 등이 있다.

리터럴 출력을 할 때 여러 개 출력하는 방법이 있다.

 

printf("%d + %d = %d\n", 54232, 36629, 54232 + 36629);

이런 식으로 %d를 쭉 깔고 넣을 값을 순차적으로 지정하는 것이다. 내가 나중에 숫자를 직접 별도로 옆에 지정하거나 변수를 옆에다 두었을 때 그 값이 출력되게 할 수 있다.

 

5. 자료형

 

컴퓨터 공학에서 가장 작은 크기 단위는 1bit이다.

1bit.

8bit가 1byte가 되고,

1024byte가 1megabyte(1MB) 가 된다. 일반적으로 1,000MB가 1GB이지만 이진법체계에서는 1,024MB가 1GB가 된다.

 

이 크기에 따라서 자료형을 지정할 때 값에 맞는 자료형을 사용하도록 주의해야 한다.

값이 초과가 되면 오버플로우가 발생하게 되고 내가 필요한 값이 출력되지 않을 수도 있다.

즉, 저장될 데이터의 크기와 해석 방법에 대한 정보를 명령하는 것이다.

 

일단 암기해야 되는 건 다음과 같다. 

 

1) 정수 자료형 : char(1바이트. -128~127), short int(2바이트. -32,768~32,767 ), int(4바이트. -2,147,483,648~ 2,147,483,647 ), long(4바이트), long long(8바이트. -9,223,372,036,854,775,808~).
9,223,372,036,854,775,807

2) 실수 자료형 : float(4바이트), double(8바이트), long double.

 

예를 들어, int 4bytes는? 4bytes는 32bits이다. 즉, 2^32개까지 표현 가능하다는 것을 의미한다.

 

자료형 앞에는 기본적으로 signed가 붙어있다고 생각하면된다. 대부분 생략한다.

예를 들어, int 4bytes의 경우 -(2^32/2) ~ (2^32/2)-1 까지 표현하게 된다.

자료형 앞에다 undesigned 를 붙이면 음수가 생략되어 표현할 수 있는 양수값이 늘어나게 된다. 서식 지정자로는 %u를 쓰면 된다.

예를 들어 undesigned char는 0~255의 값이다.

 

 

6. 변수와 상수.

무조건 숙지해야 하는 샘플코드가 있다.

자료형 변수명 = 값;

// Main.c

#include <stdio.h>

int main(void)
{
	int Num = 21; 
	double PI;           
	printf("Num = %d\\n", Num);   

	PI = 3.141592;  
	printf("PI = %lf\\n", PI);

	return 0;
}

 

읽을 때 항상 int 자료형의 Num 변수를 선언하고, Num 변수에 21을 대입(초기화)해라. 라고 읽자.

아래의 double PI; 는 double 자료형의 PI변수를 선언한 것이다. 위와는 다르게 초기화를 하지 않았으므로 나중에라도 초기화 해야 한다. 따라서 아래 PI = 3.141592;로 변수 PI를 초기화 한 것을 볼 수 있다.

 

7. scanf() 함수

 

키보드로부터 데이터를 입력 받을 수 있게끔 해주는 함수이다.

보통 #define _CRT_SECURE_NO_WARNINGS 가 함께 정의되어 사용된다.

scanf() 함수는 stdio.h에 정의되어 있으므로, #include <stdio.h> 전에 #define _CRT_SECURE_NO_WARNINGS를 정의해야 한다.

 

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
int main(void)
{
	int Num;
	scanf("%d", &Num); // "Num에다가(&) %d 형식으로 입력받아라."
	printf("%d", Num); // "Num을 %d 형식으로 출력해라."
	return 0;
}

 

앞에서 int 자료형의 Num 변수를 선언했지만 초기화를 하지 않았다.

이변 경우에는 Num 변수에 직접 키보드로 입력하여 값을 대입할 것이므로 scanf() 함수를 사용하여 Num에다가(&Num) 입력받는다. 이 때 자료형 지정하는 거 잊지말자.

입력 받았으면 printf("%d", Num); 으로 출력한다.

+ Recent posts