<for>

 

구문)

for(초깃값조건값증감값)

{

   반복할 내용

}

"조건값이 참인 동안 반복할 내용을 반복적으로 수행해라"라는 의미이다.

 

<실습>

 



구문 해석)

 초깃값 a=0이다.

 조건값 0<10 이기 때문에 참

 {}괄호 안에 있는 반복할 내용 한 번 수행

 증감값 a++ a 1이 더해짐.

 다시 조건값 1<10이 참

 반복할 내용 한 번 수행

 계속 반복하다가 a++의 값이 10이다.

 조건값 10<10 거짓이기 때문에 for문을 빠져나옴

 

 

-결과-



 

 

 

<for문 무한루프>

 

for문의 무한루프를 만들기 위해선 어떻게 해야할까?

while문과 같이 for문의 조건값에 무조건 참이 성립하는 값인 1을 넣어주면 된다.

<실습>

 



 

-결과-



 

<심화실습>

while문으로 심화실습 했던 구구단을 for문을 사용해서 만들어보자



 

-결과-



LIST

'Programming > C' 카테고리의 다른 글

C언어 – do~while문  (0) 2016.02.05
C언어 - if문, if~else문, if~else if문  (0) 2016.02.05
C언어 – while문  (0) 2016.02.04
C언어 - 자료형 변환  (1) 2016.02.03
C언어 - 자료형, sizeof()함수  (0) 2016.02.03

<반복문 While>

 

구문)

while(조건식)

{  // while문 시작

   반복할 내용

}  // whilw문 끝

조건식이 참일 경우 반복할 내용을 1번 수행 후또 조건식이 참이면 계속 반복할 내용 수행...

 

 

<실습>

while문으로 덧셈반복문을 만들어보자.



 

-결과-



 

 

 

<while문 무한루프>


while문에서 무한루프를 만들려고 한다어떻게 하면 될까?

while문에서 조건문을 항상 참으로하여 통과시키면 된다항상 참인것? 1을 넣어주면 된다.

 

<실습>



-결과-



 

결과는 일부분만 찍은것이다... 1부터 계속 1씩 더해나가 하나씩 차례로 출력한다언제까지무한대로!

 

 

<심화 실습>

while문을 사용하여 구구단을 만들어보자!

 



-결과-





LIST

1. 자동 형변환

컴파일러가 자동으로 해주는 자료형의 변환이다.

다른 자료형 간 산술 연산을 하는 경우 자동 형변환이 발생한다.

예를 들어 정수+실수와 같이 자료형이 다르면 컴파일러가 자동 형변환의 우선순위에 자동형변환을 해준다.

우선순위는 char  int  long  float  double  long double순이다.

<실습>

#include <stdio.h>

int main()

{

   int a = 100;   // 정수

   double b = 1.2;   // 실수

   printf("%lf \n", a+b);   // 정수 + 실수->자동으로 자료형변환이 발생.

   return 0;

}


-결과-


 

 

이것을 풀이하면 변수 a에 저장되어 있는 값 100 a+b를 연산하기 전에 double형으로 변환시켜

double+double형으로 한다.

double형으로 형 변환된 이유는?  위에 우선순위는 int 보다 double형의 우선순위가 더 높기 때문이다.

어떻게 보면 당연한건데... 쉽게 생각하자.

더 큰 놈?은 더 작은놈한테 들어가는게 말이안된다. double형같이 큰놈이 int형 같이 작은놈으로 어떻게 표현이 된단 말인가?!ㅎㅎ...

 

대입 연산을 하는 경우에는 대입 연산자를 기준으로 오른쪽에서 왼쪽으로 자동 형변환이 발생한다.

 

<실습>

#include <stdio.h>

int main()

{

   char a = 129;   // char형의 범위는 -128~+127까지다이런 범위에 129라는 값을 넣게되면 이상한 값이 들어간다어떻게? char형으로 자동형변환이 되어 저장된다오버플로우가 발생하여 -127이 출력된다.

   int b = 1.23   // 1.23의 실수형자료형이 int형으로 형변환되어 b에는 1이 저장된다.

   double c = 10;   // 정수형 자료형 10 double형으로 형변환된다출력하면당연히 10.00000 이런식으로!

 

   printf("%d %d %lf \n", a, b, c);

   return 0;

}

 

-결과-


 

 

2. 강제 형변환

프로그래머가 강제로 자료형의 형변환을 시켜준다.

<실습>

#include <stdio.h>

int main()

{

   int a = 10;

   int b = 3;

 

   double result;

   result = a/b;   // 정수형/정수형의 결과 3인데 result double형이기 때문에 대입 연산자의 자동형변환 우선순위에 따라3.000000이 저장됨.

   printf("%lf \n", result);

   result = (double)a/b;   // double로 강제 형변환 후실수형/정수형

   printf("%lf \n", result);

   result = a/(double)b;   // 정수형/실수형

   printf("%lf \n", result);

   result = (double)a/(double)b;   // 실수형/실수형

   printf("%lf \n", result);

 

    return 0;

}

 

-결과-





LIST

<자료형이란?>

 

변수가 저장하는 데이터 형식을 말한다정수형실수형문자형과 같이 데이터에는 형식이 있다이처럼 데이터를 여러 형식으로 나누는 근거는 변수 앞에 붙여진 키워드를 보고 결정하는데 변수가 저장하는 데이터 형식을 나타내며 이것을 자료형이라 한다.

int a; -> int "자료형", a "변수이름을 말한다.

자료형에는 크게 두 가지가 있는데정수형과 실수형이다.

정수형에는 char, short, int, long이 있고실수형에는 float, double, long double이 있다.

자 그렇다면, sizeof 연산자로 자료형의 크기를 알아보자.

 

사용법)

sizeof(자료형 자료형의 메모리 크기를 출력

sizeof(변수 변수의 메모리 크기를 출력

 

정수형부터 알아보자~!

 



-결과-



 

 

 

이번에는 자료형들의 최소값~최대값의 범위를 알아보자.

char형은 2 8제곱승, short형은 2 16제곱승의 범위를 나타내지만 계산이 어려우므로 C언어에서 제공해주는 정수형 자료형의 제이터 표현 범위를 자동으로 알려주는 라이브러리 limits.h를 사용해보자.

 

<실습



-결과-



 

 

 

<실습>

이번에는 실수형을 알아보자~

실수형도 데이터 표현범위를 나타내는 시스템 라이브러리가 있다.

바로 float.h인데이 라이브러리를 사용하여 실수형의 최소값~최대값범위를 알아보자!

실수형은 범위가 너무커서 서식문자를 %e로 하여, E표기문자로 나타내었다.

 



 

-결과-



 

 

 

문자형을 알아보자~!

문자형을 하기전에 컴퓨터는 전기적인 신호밖에 받아들이지 못해 모든 신호를 0 1으로 나타내야한다.

그렇다면 숫자는 2진수로 바꿔서 한다고 하자... 그럼 문자는 어떻게 나타낸단 말인가?

바로 문자와 숫자를 매칭하는 것이다.

ANSI ASCII코드를 만들어서 숫자를 이용하여 문자를 인식할 수 있는 문자 표현에 대한 표준을 정했다.

 

<ASCII 코드표>

 



 

 

<실습>

ASCII코드 표를 참조하여 문자와 숫자를 출력해보자.

  





LIST

<연산자란?>

 

연산을 수행하는 기호이다. C언어에서 연산자란 프로그램의 논리식이나 산술식을 표현하고 처리하기 위해서 제공되는 다양한 기호들을 말한다.

 

1. 대입 연산자

데이터를 저장하는 연산자다.

<실습>

#include <stdio.h>

int main()

{

   int i=0, j=0;   // 변수 i j 0을 대입한다.

   printf("i=%d, j=%d \n", i, j);   // 출력

   i=10;   // 변수 i  10을 대입 (대입연산자 = 을 사용)

   j=20;   // 변수 j 20을 대입

   printf("i=%d, j=%d \n", i, j);

return 0;

}

 

-결과-



 

 

2. 산술 연산자

산술 연산자는 말 그대로 산술(더하기빼기곱하기나누기나머지) 수행하는 연산자이다.

<실습>

#include <stdio.h>

int main()

{

   int i=2, j=4;   // 변수 i 2 j 4를 대입한다.

   printf("i=%d, j=%d \n", i, j);   // 출력

   printf("i+j 연산자 결과 :  %d\n", i+j);   // 덧셈 연산자

   printf("i-j 연산자 결과 :  %d\n", i-j);   // 뺄셈 연산자

   printf("i*j 연산자 결과 :  %d\n", i*j);   // 곱셈 연산자

   printf("j/i 연산자 결과 :  %d\n", j/i);   // 나눗셈 연산자

   printf("i%%j 연산자 결과 :  %d \n", i%j);   // 나머지 연산자

return 0;

}

 

-결과-



 

 

3. 복합 대입 연산자

산술 연산자와 대입 연산자를 하나로 나타내는 기호이다.

 

복합 대입 연산자

같은 표현

설명

a=a+b

a+=b

a+b를 수행 후, a에 값을 저장

a=a-b

a-=b

a-b를 수행 후, a에 값을 저장

a=a*b

a*=b

a*b를 수행 후, a에 값을 저장

a=a/b

a/=b

a/b를 수행 후, a에 값을 저장

a=a%b

a%=b

a%b를 수행 후, a에 값을 저장

 

 

 

4. 증감 연산자

++, --기호를 이용하여 1을 증가시키거나 감소시키는 연산자이다.

 

증감 연산자

설명

a++

a를 먼저 연산키기고 증가

++a

a를 먼저 증가 시키고 연산

a--

a를 먼저 연산키기고 감소

--a

a를 먼저 증가 시키고 감소

 

 

<실습>

#include <stdio.h>

int main()

{

   int i=1, j=1;

   int a, b;

 

   a=++i;   // i의 값을 선 증가 후에 a에 그 값을 대입한다.

   printf("%d %d \n", a, i);   // 결과 2 2

 

   b = j++;   // j의 값을 선 연산(대입 연산)후에 증가시킨다.

   printf("%d %d \n", b, j);   // 결과 1 2

   return 0;

}

 

-결과-



 

 

5. 관계 연산자

관계를 비교하여 참(1)과 거짓(0)으로 결론 짓는 연산자

 

관계 연산자

설명

>

a>b

a b보다 클지를 비교

<

a<b

a b보다 작을지를 비교

>=

a>=b

a b보다 크거나 같을지를 비교

<=

a<=b

a b보다 작거나 같을지를 비교

==

a==b

a b가 같을지를 비교

!=

a!=b

a b가 같지 않은지를 비교

 

 

 

6. 논리 연산자

논리 연산자에는 &&연산자, ||연산자, !연산자가 있다.

&&연산자는 AND연산자이며 논리곱이라 한다둘 중 하나라도 거짓이면 거짓으로 판단.

||연산자는 OR연산자이며 논리합이라 한다둘 중 하나라도 참이면 참으로 판단.

!연산자는 NOT 연산자이며 논리 부정이다 한다참이면 거짓이고 거짓이면 참이다무조건 반대!

 

&& 연산자

피연산자

연산자

피연산자

결과

0

&&

0

0

0

&&

1

0

1

&&

0

0

1

&&

1

1

|| 연산자

0

||

0

0

0

||

1

1

1

||

0

1

1

||

1

1

연산자

 

!

0

1

 

!

1

0

 

 

#include <stdio.h>

int main()

{

   int a = 1, b = 2, c = 3;

   int result1, result2, result3;

 

   result1 = (a>0) &&(b>1);   // 1&&1 = 1

   result2 = (a=1) || (b>1);   // 0||1 = 1

   result3 = !c;   // !3 = 0 (0이 아닌 값들은 다 참으로 인식)

 

   printf("result1 = %d \n", result1);

   printf("result2 = %d \n", result2);

   printf("result3 = %d \n", result3);

   return 0;

}

 

-결과-



 

 

7. 조건 연산자

조건 연산자의 구조는 "조건식 ? 1 : 2" 이다.

이 의미는 조건식이 참일 경우 식1을 수행하고거짓일 경우 식2를 수행하라는 의미이다.

#include <stdio.h>

int main()

{

   (2>3) ? printf(" \n") : printf("거짓 \n");   // 2 3보다 작으므로 거짓이 출력

   return 0;

}

 

-결과-



 

 

8. 비트 연산자

현대의 모든 컴퓨터는 전자식 컴퓨터로 전기 혹은 전자 신호를 이용하여 저장하고 관리하는데 전류가 흐르는 상태를 1, 흐르지 않는 상태를 0으로 표현할 수 있기 때문에 모든 정보를 1 0으로 저장하고 처리한다.

비트란?

컴퓨터는 모든 신호를 2진수로 고쳐서 기억하는데 비트는 2진수 값 하나를 저장할 수 있는 최소 메모리 공간을 말한다.

비트 1개는 나타낼 수 있는 2진수는 0 또는 1이다.

그렇다면 비트 2개로 나타낼 수 있는 2진수는? 00 01 10 11 4개이다.

, N개의 비트는 2 n 으로 나타낼 수 있는 것이다.

 

이러한 비트 연산자는 비트 단위로 처리하는 연산자로 하드웨어와 밀접하게 관련된 각종 처리를 쉽게 해주고메모리 공간을 줄여서 성능을 높여 준다.

 

비트 연산자

연산식

설명

&

a&b

비트 단위 AND 연산

0&0=0, 0&1=0, 1&0=0, 1&1=1

|

a|b

비트 단위 OR 연산

0|0=0, 0|1=1, 1|0=1, 1|1=1

^

a^b

비트 단위 XOR 연산

0^0=0, 0^1=1, 1^0=1, 1^1=0

~

~a

비트 단위 NOT 연산

~1=0, ~0=1

<<

a<<2

왼쪽으로 2칸 이동

실습을 통해 알아보자

>>

a>>1

오른쪽으로 1칸 이동

실습을 통해 알아보자

 

 

 

<실습>

<< >>연산자의 실습을 해보자.

#include <stdio.h>

int main()

{

   int a=10, b=10, c=-10;

   int result1, result2, result3;

   result1 = a<<2;

   result2 = b>>2;

   result3 = c>>2;

   printf("result1 = %d \n", result1);

   printf("result2 = %d \n", result2); 

   printf("result3 = %d \n", result3);

   return 0;

}

<<풀이

 여기서! 10 2진수로 나타내면 다음과 같다.

 0 0 0 0 1 0 1 0  이것을 왼쪽으로 두 칸 옮긴다.

 0 0 1 0 1 0 ? ? 이렇게 될 것이다왼쪽 시프트의 경우 무조건 빈 자리가 생기면 0으로 채운다.

 0 0 1 0 1 0 0 0 이렇게 된다. -> 십진수로 바꾸면 40이다.

>>풀이

 여기서! 10 2진수로 나타내면 다음과 같다.

 0 0 0 0 1 0 1 0  이것을 오른쪽으로 두 칸 옮긴다.

 ? ? 0 0 0 0 1 0 이렇게 될 것이다오른쪽 시프트의 경우 빈 자리가 생기면 양수는 0으로 채운다.

 0 0 0 0 0 0 1 0 이렇게 된다. -> 십진수로 바꾸면 2이다.

>>풀이 2

 여기서! -10 2진수로 나타내면 다음과 같다.

 1 1 1 1 0 1 1 0 이것을 오른쪽으로 두 칸 옮긴다.

 ? ? 1 1 1 1 0 1 이렇게 될 것이다오른쪽 시프트의 경우 빈 자리가 생기면 음수는 1으로 채운다.

 1 1 1 1 1 1 0 1 이렇게 된다. -> 십진수로 바꾸면 -3이다.



LIST

<상수란?>

 

프로그램 실행 도중 값이 변경되지 않는 데이터를 의미한다.

상수에는 리터럴 상수와 심볼릭 상수가 있다.

1. 리터럴 상수

1, 2, 3, a, b, c와 같은 읽은 그대로의 의미가 있는 상수 

 정수형 상수 : 소수점이 포함되지 않은 상수

10진수 상수 : 10, 20, 30   16진수 상수 : 0x10, 0x20, 0x30   8진수 상수 : 010, 020, 030

출력 서식 문자 : %d, %x, %o

 

 실수형 상수 : 소수점이 포함된 상수

출력 서식 문자 : %f, %lf

 

 문자 상수 : 작은 따옴표(' ')로 묶인 문자 하나

ex) A, B, a, b, &, *, +, - 와 같은 영문자숫자특수 기호 문자를 말함.

출력 서식 문자 : %c

 

 문자열 상수 : 큰 따옴표(" ")로 묶은 하나 이상의 문자로 구성된 문자열문자열 상수 맨 마지막에 문자열의 끝을 알리는 종료 문자 \0을 자동으로 추가(NULL 문자)

출력 서식 문자 : %s

 

<실습>

#include <stdio.h>

int main()

{

   printf("10진수 정수형 상수 : %d, 16진수 정수형 상수 : %x, 8진수 정수형 상수 : %o \n", 10, 10, 10);

   printf("실수형 상수 : %lf \n", 3.1);

   printf("문자 상수 : %c, %c \n", 'a', '#');

   printf("문자열 상수 : %s \n", "10 + 10");

   return 0;

}


-결과-



 

 

 

2. 심볼릭 상수

상수를 기호화하여 의미있는 이름으로 지어서 쓰는 상수 

 const 키워드 - 상수화 시키기

 

<실습>

#include <stdio.h>

int main()

{

const int NUM = 100;    // NUM;으로 종료하면 에러가 난다아무 의미 없는 값이 상수화 되어 버리기 때문!

const double PI = 3.14;    // NUM 100으로 쓰고, PI 3.14로 쓴다.

 

// NUM = 200; 만약 주석처리 하지 않으면 에러 발생이미 위에서 NUM에 상수화를 시켜버려서 NUM은 상수가 되었다그런데 밑에서 또 상수=상수이렇게 되어버리기 때문에 에러!

// PI = 3.15;

 

printf("NUM = %d \n", NUM);   // 100이 출력

printf("PI = %lf \n", PI);   // 3.14출력

 

return 0;

}

 

-결과-



 define 키워드 - 상수화 시키기

 

<실습>

#include <stdio.h>

#define PI 3.14

#define NUM 100

 

int main()

{

   printf("NUM = %d \n", NUM);

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

 

   return 0;

}

 

-결과-



LIST

<scanf()함수란?>

 

키보드로부터 데이터를 입력받는 함수이다.

형태)

scanf("%d", &a);

%d입력을 위한 서식문자, &a변수의 주소

변수의 주소 a에다가 사용자가 입력한 서식문자에 맞춰 저장하겠다라는 의미이다.

이론은 여기까지하고 무조건 실습이다!

 

<실습>

#include <stdio.h>     // printf()함수와 scanf()함수는 stdio.h파일 안에 라이브러리로 정의되어 있어서 헤더파일 stdio.h를 반드시 포함 시켜주어야 한다.

int main()

{

   int a;

   printf("What is your tall? : \n");

   scanf("%d", &a);        // printf함수에서 키를 입력하라고 나온다그 곳에 170을 입력했다고 가정하자그럼 170이라는 숫자가%d의 서식형태(정수)에 맞춰서 위에 만들어 놓은 변수 a에 저장된다.

   printf("you are %d cm. good! : \n", a);     // a를 출력하는 것이다.

   return 0;

}


-결과-


 

 

<심화 실습>

printf()함수와 scanf()함수를 배웠으니이 두 함수를 이용해서 재밌는 프로그램을 짜보자.

원의 반지름을 입력 받아서 넓이는 계산하는 프로그램을 만들어보자!

#include <stdio.h>

int main()

{

   double r;

   double pi = 3.14;

   printf("반지름을 입력하세요 : \n");

   scanf("%lf", &r);

   printf("입력하신 반지름은 %lf이며넓이는 %f입니다. \n", r, r*r*pi);

   return 0;

}

 

-결과-



 

 

 

<scanf 함수 사용시 주의할 사항>

 

1. 두개 이상의 값을 입력할 때

프로그램 코드를 짜다가 두 개이상의 문자나 숫자를 나란히 입력한다고 가정해보자.

<실습>




 

여기서 왜 b의 값에는 아무것도 찍히지 않은 것일까분명히 위에는 a b라고 찍었는데....

 

이유는 a를 쓰고, space bar를 눌른 후, b를 썻다이때 space bar의 한칸 띄우는 데이터가 b에 들어갔기 때문이다위에 코드를 보면 scanf에서 %c%c를 붙여사용했다그렇다면 이 문자로 붙여서 ab이렇게 찍으면 아마 제대로 출력이 될 것이다.

 

혹은 밑의 실습처럼 %c %c이렇게 한칸을 띄어서 사용하면 된다.

 

<실습>





 

2. 입력을 각각 한줄에 따로 받을때

하나의 데이터를 입력받고 다음줄에 데이터를 입력받을 때사람들은 누구나 데이터하나 찍고 엔터를 쳐서 다음줄 가서 데이터 하나마저 찍고 엔터를 칠 것이다.

 

이때버퍼라는 개념이 들어가는데사람들이 엔터를 치는 순간 그 엔터라는 데이터가 버퍼라는 임시저장공간에 저장되어 버린다. (모든 데이터가 바로 변수에 저장되는 것이아리고 버퍼라는 임시저장공간에 저장되었다가 저장됨)

 

그렇기때문에 엔터라는 값이 b안에 들어가버리는 것이다.

<실습>

 



 

이렇게 되어버리기 때문에 한 문자의 입력값을 받은 후버퍼값을 지워줘야한다그 명령어는 fflush(stdin);이다.

<실습>





 

LIST

<printf()함수란?>

 

printf()함수는 모니터에 데이터를 출력할 때 사용하는 함수이다.

ex)

#include <stdio.h>

int main()

{

   printf("Hello, My name is Mr \n");         // \n 개행문자로 \n이 없다면

           Hello, My name is Mr깝계속하려면 아무키나 누르십시오... 이런식으로 출력

   return 0;

}

 

-결과-



 

 

#include <stdio.h>

int main()

{

   printf("%s \n", "문자열");       // 서식문자 %s를 출력표시형태는 %s이기 때문에 문자열만 출력 가능.

   return 0;

}

 

-결과-



 

 

#include <stdio.h>

int main()

{

   printf("%c \n", 'A');        // 서식문자 %c를 출력표시형태는 %c이기 때문에 문자만 출력 가능

   return 0;

}

 

-결과-



 

여기서 \n과 같이 특수문자들이 보일 것이다. printf()함수를 사용할 때는 이런 특수문자를 알아야 하는데다음과같이 정리하였다.

 

(특수문자 정리 표)



 

또 위에 예제에 보면 %s, %c라는 것이 보일 것이다.

이것을 서식 문자라고 하며출력 형태를 지정해주는 문자라고 정리하자.

이것도 표로 정리해 보았다.

 

(서식 문자 정리표)



 

그럼 이 서식문자와 특수문자를 가지고 printf()함수를 실습해보자.

1. 특수문자 실습

#include <stdio.h>

int main()

{

   printf("\t Hello \n Good \n");      // \t을 이용하여 맨 앞줄에 탭을 쓰고 Hello 그 후개행문자로 한줄 띄고 Good 출력한다.

   printf("큰따옴표 : \" \n");           //  큰 따옴표 "를 출력

   printf("큰따옴표 : \' \n");           //  작은 따옴표 '를 출력

   printf("역슬래시 : \\ \n");           //  역슬래시 \를 출력

   return 0;

}

 

-결과-



 

 

 

2. 서식 문자 실습

#include <stdio.h>

int main()

{

   printf("%d \n", 123);            // 서식 문자 %d에 의하여 123이 출력만약에 123 대신 문자나 문자열을 입력하면 오류가 나거나 다른 값이 출력된다왜냐서식 문자는 %d라서 숫자를 출력해야하는데 다른 값이 오면 안돼서!

   printf("%d \n",123+123);           //  서식 문자 %d에 의하여 ,다음으로 찍힌 123+123이 계산되어 상수임 246으로 출력

   printf("10진수 정수 : %d \n", 0.6);           //  0.6의 정수값인 1이 출력된다

   printf("10진수 실수: %f \n", 0.6);           //  0.6의 실수값이 출력된다.

return 0;

}

 

-결과-



 

 

<필드폭 지정하기>

 

%03d : 필드폭을 3칸 확보하고오른쪽 정렬해서 출력해라남은 자리는 0으로 채움

%-3d : 필드폭을 3칸 확보하고왼쪽 정렬해서 출력해라.

%+3d : 필드폭을 3칸 확보하고오른쪽 정렬해서 출력해라양수는 +부호음수는 -부호를 넣어서!

<실습>

#include <stdio.h>

int main()

{

   printf("%03d, %03d \n", 1, 20);

   printf("%-03d, %-03d \n", 1, 20);

   printf("%+03d, %+03d \n", 1, 20);

   return 0;

}

 

-결과-





LIST

<프로그램 작성 단계>


1. 사람이 프로그램을 작성한다.
소스 파일 생성(*.c)
2. 사람이 c언어로 짠 내용을 컴파일러가 컴파일한다.
컴파일러는 소스 파일을 기계가 이해할 수 있게 기계어로 변환하는 컴파일이라는 것을 한다오브젝트 파일 생성(*.obj)
3. 링커가 오브젝트 파일과 표준 라이브러리 함수를 연결하여 결과물로 실행 파일을 만든다.
실행 파일 생성 (*.exe)
4. 실행 파일을 실행하면 된다.
 


<전처리기란?>


쉽게 말해먼저 처리하는 것을 의미한다. #include <stdio.h>에 보면 특수문자 '#'이 있는 것을 알 수 있다. 이 특수문자 '#'이 전처리기이다. 컴퍼일러가 수행하기 전에 먼저 처리하라는 의미이다.
#include <stdio.h>에서 전처리기는 다음과 같이 동작합니다. "전처리기 #, include하는 것좀(포함하는 것 좀 먼저 해 줘)라는 의미이다.
 

 

<헤더파일이란?>


표준 라이브러리 함수 printf(), scanf() 등의 동작을 따로 정의해 놓은 파일을 의미한다. 헤더파일의 확장자는  *.h이다.
#include <stdio.h>에서 헤더 파일은 stdio.h이다.(stdioStandard Input Output의 줄임말)
이 말을 정리하면... stdio.h라는 헤더파일에는 printf(), scanf()와 같은 함수를 정의해 놓은 라이브러리 모읍집? 이라고 생각하면 된다.
 
 

<main()함수란?>


프로그램이 실행될 때, 가장 먼저 호출되며 운영체제가 호출하고, 맨 마지막에 종료된다.
#include <stdio.h>
int main()
{
 내용
}
이렇게 대부분 구조가 되어있는데, int main()을 해석해보면, int는 출력형태이고 main은 함수 이름이다. ()void형태로 입력형태를 말한다.
정리해보면 입력형 없이(void형 이니까) main()함수를 호출해서 출력은 정수(int)으로 처리해라 라는 의미이다.
 

<세미콜론>


C언어에서 세미콜론 ';'의 의미는 문장을 끝내겠다는 의미이다. 마치 한국말에서 문장에 끝나면 마침표를 찍는 일을 하는 것과 동일하다고 생각하면 된다.
int abc = 2;        // 다음은 abc라는 변수에 2라는 상수를 넣었고, 마침표를 찍는것과 같이 세미콜론으로 마무리를 하였다. 변수와 상수는 나중에 배워보자!
 

<return?>


return의 의미는 두 가지가 있다.
1. 함수를 호출한 영역으로 값을 반환한다는 의미
2. main()함수를 종료한다는 의미
예를 들어보자.
#include <stdio.h>
int main()
{
   printf("Hello");   // printf();함수는 나중에 살펴보자. 간단히 모니터에 출력하는 함수라고 생각하자.
   return 0;        // 이 의미는 운영체제에게 0을 반환하고 main()함수를 종료하라는 의미이다.
}
 
#include <stdio.h>
int main(void)
{
   printf("Hello");
   return;      // 이 의미는 반환할 것이 없으니 main()함수를 그냥 종료하라는 의미이다.
}
 
왜 운영체제에게 0을 반환할까? 프로그램이 실행되면 운영체제는 main()함수를 맨 처음으로 호출하게 된다. 프로그램이 종료될 때도 맨 마지막으로 종료되는 함수가 main()함수이다. 마지막으로 0return해 주면서 프로그램이 정상적으로 종료되는 것인지를 알 수 있는것이다.(컴퓨터는 01...!)


LIST

+ Recent posts