C언어 기본적인 문법
이번 챕터에서는 C언어의 기본적인 문법에 대해서 다룹니다.
본 문서는 https://wikidocs.net/2145를 참고하여 작성되었습니다.
왜 C언어인가?
사실 개인적인 생각으로는 C언어가 초심자에게 맞는 언어는 아니라고 생각합니다. 옛날과는 다르게 현재에는 C언어보다 쉬운 문법들을 가진 언어들이 많이 나왔으며 (e.g. Python
, Ruby
, Java
etc..) 운영체제가 아닌 영역의 일반적인 소프트웨어를 개발할 때는 C언어보다 Java, Python과 같은 언어들이 오히려 더 적합하다고 생각합니다. 그럼에도 불구하고 아직까지도 많은 대학이나 교육기관에서는 C언어를 첫 언어로 가르치는 곳이 많은데, (MIT에서는 Python을 첫 언어로 가르친다.) 그 이유는 C언어로 프로그래밍을 접할 경우 데이터 타입, 컴파일, 메모리 관리 등 단순히 코딩을 하는 것 이외에도 컴퓨터공학에 대한 지식을 폭 넓게 알 수 있기 때문입니다. 특히 프로그래밍 경시대회용으로는 거의 C나 C++이 표준으로 되어있는데, 그 이유는 바로 프로그램 구동 속도가 타 언어들에 비해서 매우 빠르기 때문. 이러한 장점때문에 운영체제를 개발할 때는 필수적으로 C언어가 쓰이는 이유이기도 합니다.
위의 말이 잘 이해가 되지 않는다면, 프로그래밍 경시대회용으로는 성능이 매우 좋은 언어이기 때문에 C를 배우는 것이고, C의 문법이 타 언어에 비해서 문법이 형식적이고, 고려해야할 사항이 많기 때문에 이후에 다른 언어를 배울 때는 더욱 쉽고 빠르게 습득할 수 있다는 장점을 가지고 있는 언어라는 정도만 이해하시면 좋을 것 같습니다.
C언어 기본적인 구조
#include <stdio.h>
int main(){
return 0;
}
일단 기본적으로 C언어의 가장 기본적인 형태입니다. #include
문법을 통해서 stdio.h
헤더파일을 import합니다.
여기서 입문자들이 가장 많이 하는 실수는 stdio를 studio라고 적는 것 입니다. stdio는 Standard Input/Output의 약자입니다.
stdio.h
에서는 C언어의 기본적인 Input/Output 함수들이 담겨있는 라이브러리입니다. 이 표준 라이브러리에는 기본적으로 printf
와 scanf
함수를 포함하고 있기 때문에, stdio.h
를 꼭 import 시켜줘야만 printf
와 scanf
함수를 사용할 수 있습니다.
C언어의 자료형
구분 | 변수타입 | 포맷터 |
---|---|---|
정수 | int | %d |
실수 | float | %f |
문자 | char | %c |
문자열 | char[] | %s |
논리값 | bool |
기본적인 C언어의 자료형입니다. 위의 자료형은 C언어뿐만 아니라 다른 언어들에서도 비슷하게 사용되니, 잘 익혀두면 좋을 것같습니다.
변수 선언하기
// 변수타입 변수명;
int number; //정수형 타입의 number 변수 선언
int a = 10; // 정수형 타입의 a 변수 선언과 함께 10으로 초기화
int a, b; // 정수형 타입 a와 b 변수 동시에 선언
float c = 3.14 // 실수형 타입 c 변수 선업
C언어
는 Python
과 다르게 변수를 선언할 때, 꼭!! 변수타입이 앞에 있어야합니다.
변수 이름 규칙
C언어는 변수이름을 정할 때, 몇가지의 규칙이 있습니다.
- 변수의 이름은 알파벳, 숫자, 언더바(_)로만 구성해야 한다.
- 대소문자를 구분한다. (number과 Number은 다른 변수입니다.)
- 변수 이름의 첫글자는 숫자로 시작할 수 없다.
- 변수 이름에 공백을 포함할 수 없다.
- 예약어(키워드)를 사용할 수 없다. (int, main 등)
위 규칙에 따라서 아래와 같은 변수 명은 모두 잘못된 변수명입니다.
// Wrong
int no-game;
int 1number;
int int;
char[10] student name;
int person`s age;
아래의 변수 명은 사용할 수 있는 올바른 변수명입니다.
// Correct
int no_game;
int _number;
int integer;
char[10] student_name;
int persons_age;
연산
변수끼리 더하거나 빼는 등 다양한 연산을 하게 되는데 주로 다음과 같은 연산자 들을 사용합니다.
연산자 | 기능 |
---|---|
= | 오른쪽 값을 왼쪽에 대입 |
+ | 왼쪽과 오른쪽의 합 |
- | 왼쪽에서 오른쪽을 뺌 |
* | 왼쪽과 오른쪽의 곱 |
/ | 왼쪽을 오른쪽으로 나눔 |
% | 왼쪽을 오른쪽으로 나눈 나머지 |
다른 자료형과의 연산
원칙적으로 보자면, 서로 다른 자료형끼리 연산을 하는 것은 불가능합니다. 하지만, 3(int) + 1.2(float)와 같은 연산의 경우에는 3인 정수(int)를 3.0인 실수(float)로 보면 되기 때문에, C언어에서는 이러한 경우를 연산하는 과정에서 형을 바꾸어 처리합니다.
이 경우에는 기본적으로 크기가 작은 자료형과 큰 자료형을 연산하게 되면, 큰 자료형으로 바뀌게 됩니다.
연산 | 결과 |
---|---|
int + float | float |
int / float | float |
int * float | float |