세리프 따라잡기

WEEK05 - TIL C언어 기초 문법 본문

SW사관학교 정글

WEEK05 - TIL C언어 기초 문법

맑은 고딕 2022. 4. 29. 17:04

1. include와 헤더파일

- 헤더파일이란? c언어의 문법을 가지고 있는 프로그램. 헤더파일이 코드에 추가되어 있지 않다면, 컴퓨터는 아무것도 하지 못한다. (컴퓨터가 글자들을 알아볼 수가 없어서) == 헤더파일이 없다면 컴퓨터가 컴파일을 못한다.

#include <stdio.h> //stdio.h is inputed
#include <stdilb.h> //stdilb.h is inputed

2. main 함수

- c언어는 프로그램이 시작되면 무조건 main부터 찾기 때문에 main 함수 안에 코드를 짜야 명령어가 실행된다.

main 앞에 쓰는 int의 의미는 정수 '-21억' ~ '+21억'을 의미하는데, 이는 main의 반환값을 의미한다.

따라서 반환값에 따라 반환을 해야 하는 값이 다른데, 반환값을 정하지 않으면 무조건 0으로 반환된다. 이것을 바꾸려면 'return 반환값'을 쓰면 된다

#include <stdio.h>
#include <stdlib.h> 
//문자열 변환, 의사 난수 생성, 동적 메모리 관리 등의 함수들을 포함
//동적 메모리 할당 함수인 malloc, calloc 함수도 이 헤더에 포함되어 있으며,
// 시스템 명령어나 프로세스 제어 함수도 포함되어 있다.

int main(){
    // code write!
    return 0;
}

3. 세미콜론과 주석 달기

- 2번에서 return 0;에서 ;(세미콜론)이 있는 것을 볼 수 있다. 함수 바깥에서는 예외가 있으나, 함수 안에서는 무조건 문장 하나가 끝날 때 세미콜론을 붙여주어야 한다. (그렇지 않으면 컴파일러가 컴파일을 못함)

// 주석 (이건 뒤에 함수 이어서 못 씀) printf("this is function")
/* 이것도 주석 (이거 뒤엔 함수 이어서 쓸 수 있음)*/ printf("this is function")

4. 변수

- 변수란 말 그대로 '변하는 수'를 이야기 한다.

int a; //a는 정수형 변수며, 값은 미정
float f = 0.123456; //f는 실수형 변수고, 값은 0.123456
char c = 'a'; //c는 문자형 변수고, 값은 a
char c = 65; //c는 문자형 변수고, 값은 65인데 이는 ascii코드를 가리키며 따라서 값이 A이다.
char s[6] = 'korea'; //s는 문자열이고, 값은 {k,o,r,e,a,null}이다.
// null은 빈 문자를 이야기 한다. [자세한 내용은 배열에서~]
더보기

ASCII코드 표 (아스키코드)

그리고 char s[5]의 s는 변수가 아니라 배열이다.

 

5. 변수의 형태들

- 컴퓨터는 '수'를 다양하게 쪼개서 나타낸다.

int 정수
-21억 ~ +21억
double 실수와 비슷한데,
한계가 소수점 14자리까지
(하지만 저장공간이 큼)
unsigned int 자연수
1 ~ 42억
long double과 비슷하게 더 큰 수를 쓸 수 있으나, 저장공간이 큼
long 다음 int나 float같은 형태를 쓰면 21억보다 더 큰 값을 저장 가능
float 실수
-21억 ~ +21억,
소수점 6자리까지만 가능
FILE 연결리스트를 만드는데 사용하는 형태
char 문자 한 개
ASCII, 문자의 번호를 이야기
   
string 문자열
문자 여러 개
   

 

6. 변수의 값을 쉽게 변환시키는 방법

- 변수는 값을 변환시킬 수 있다 >> 변수의 값을 쉽게 변환시키는 방법들은 반복문이나 배열부분에서 잘 나온다.

int a = 1;

// a에 1을 더한다.
a = a+1;
a++;

// a에 2를 더한다
a = a+2;
a+=2;

// a에 1을 뺀다
a = a-1;
a--;

// a에 3을 뺀다
a = a-3;
a-=3;

// a에 2를 곱한다
a = a*2
a *= 2;

// a에 2를 나눈다
a = a/2;
a /= 2;

 

7. 알고 있으면 유용한 함수들

- 수학 연산 함수

#include <math.h>

이 함수들은 모두 double 형식을 사용한다. 변수는 항상 double로 cast해주어야 한다. (cast = 자료형을 변환해준다)

 

abs(x)는 x의 절댓값을 의미한다. 이것만 예외로 int를 사용한다.

만약 다른 형태가 들어가면 값이 이상하게 나올 수 있어서 double 형태의 fabs(x)를 사용하는 것이 더 편리하다.

 

pow(x,y)는 x의 y제곱이다. == x를 y번 곱한다는 것

sqrt(x)는 루트x이다. 두 번 곱해서 x가 되는 수를 말한다.

 

8. printf

- 화면에 수나 문자를 출력하는 함수. 소스는 다음과 같다.

printf("hello world!");
printf("123456"); //이건 문자로 취급

 

괄호 안 큰따옴표에 문자나 숫자를 쓸 수 있다.

 

9. 변환문자와 기호문자

- 이 둘은 printf문과 다른 함수에도 많이 사용되는 것이다. 변환문자는 %를 사용한다.

%d int
정수
%f float
실수, 0.1이여도 0.100000처럼
6자리로 강제로 늘림
%g float
실수, %f와 달리 0.1로 출력
%c char
문자 1개만
%s string
문자열
printf("%d", 134); // 134
printf("%f", 0.1); // 0.100000
printf("%g", 0.1); // 0.1
printf("%c", 'a'); // a (+char는 ''이걸로, 문자열은 ""이걸로)
printf("%s", "hello"); // hello, 이건 딱히 필요없. 그냥 printf("hello");하면 된다.

기호문자는 printf문에서 줄바꿈이나 tab키 등을 대신해주는 문자 \를 사용한다.

\n 줄바꿈
\t tab
\\ \
\" "
\' '
%% %
printf("hello\n"); // hello(enter key)
printf("hello \t hello"); // hello hello
printf("\"hello\""); // "hello"
printf("'hello'"); // 'hello'
printf("5%%"); // 5%

 

10. scanf

- 입력 함수를 말한다. 변수에 입력값을 넣는 방법을 알아보자

int a, b; // a, b라는 변수가 생겼고, a, b의 값은 미정
scanf("%d %d", &a, &b); // scanf 함수를 사용해 a, b의 값을 사용자의 입력값으로 정합니다.
printf("%d %d", a, b); // printf 함수로 a, b를 출력한다.
/* result
input: 1 3
output: 1 3
*/

scanf 함수는 따옴표 안에 변환문자를 넣고, 뒤에 입력할 변수를 쓴다. 이때 변수 앞쪽에 &을 붙인다.

→ 정리하면 scanf("변환문자", &변수); 로 쓸 수 있다.

scanf로 여러 개의 변수를 입력받을 수 있는데, 이럴 땐 변환문자 여러 개를 사용하면 된다.

 

+변환문자 사이에 있는 기호가 문제가 되는 것이 있다.

space: 모든 문자가 사이에 다 들어와도 된다.

%d %d면 입력할 때 : , . - = 같은 기호들을 쓸 수 있다.

나머지는 꼭 그 기호를 쓰셔야 합니다. %d-%d면 입력할 때 무조건 -를 붙여주어야 한다.

 

scanf 함수에서는 변환문자, 사이에 들어가는 기호만 있어야 한다. \n같은 기호문자는 변환문자로 인식해 에러가 뜰 수 있다 (제외: %%, \\)

 

11. cast 연산자

- 변수의 형태를 임시적으로 변환하는 함수

앞서 8번에서 언급했듯이 "123456"은 컴퓨터에서 문자로 취급한다. 이때 printf("%c", 9)를 하면 '9'가 나오는 것이 아니라, 다른 이상한 문자가 나온다. 이는 9에 따옴표가 안 붙어서 ASCII코드로 인식해서. → cast 연산자를 쓰면 해결된다.

int a = 9;
printf("%c", (char)a); //9 얘 근데 좀 이상함 ㅎㅎ....

cast 연산자는 변수 앞에 괄호를 놓고, 그 괄호 안에 내가 원하는 형태를 쓰면 된다. [근데 이거 난 왜 안되지?]

 

12. 조건식

- 조건문은 조건을 줘야 하기에, 무슨 조건인지 알려주는 조건식이 필요하다. 컴퓨터는 조건이 참일 때 1, 거짓일 때 0을 반환한다. 다른 수가 나와도 0만 아니면 참으로 인식한다.

 

두 변수나 상수를 비교하는 조건식을 알아보자, 비교 조건식은 다음과 같은 종류가 있다.

int a = 1, b = 10;

printf("%d\n", a == b); //0
printf("%d\n", a != b); //1
printf("%d\n", a > b); //0
printf("%d\n", a < b); //1
printf("%d\n", a >= b); //0
printf("%d\n", a <= b); //1

 

// 보다가 종료 참고 사이트

 

 

따라 치러 갑니다~

Comments