
컴파일은 vi 에디터를 통해서 source, C를 만들었으면 $gcc sourcename.c를 컴파일을 하면 binary파일이 만들어 진다. 이후 binary 파일은 $./a.out이 되면 실행이 되서 컴퓨터에서 돌아간다.
$gcc sea.c
$./a.out
from sea to shining C
/*sea.c*/
이것은 주석을 나타내며, 컴파일러는 이것을 무시한다. 인간이 읽으라는 용도로 존재한다.
주석이 없는 소프트웨어는 개발할때만 이해되고, 개발이 끝나면 아무도 이해할수 없다. 유지보수가 될 수 없다. 항상 모든 코드에 주석을 충분하게 달아야 한다.
#include <stdio.h>
"#" 으로 시작하는 행은 전처리기(Preprocessor)에서 처리 됨. 전처리기는 코드를 여러줄을 반복해서 처리하든지, 안에서 다양한 종류를 귀찮게 워드프로세서 정도의 역할을 하는 게 있다면, 그걸 묶어서 기계가 간단하게 처리할수 있는것이다. 컴파일러 전에, 뭔가 일을 처리하는 역할이다.
prinf() 함수 사용 위해 <stdio.h> 헤더 파일을 복사한다.
int main(void)
입력을 받는것은 void이고, 출력은 int 형을 낸다. 그 함수의 이름은 main 이다.
prinf()
"from sea to shining C\n"
prinf("from sea to shining C\n");
return 0;
C에는 행의 개념이 없다. 그지만, 행을 나누는게 읽기 편하다.
# include <stdio.h>
int main(void)
{
int miles, yards;
float kilometers;
miles = 26;
yards = 385;
kilometers = 1.609 * (miles + yards/1760.0);
printf("\nA marathon is %f kilometers. \n\n", kilometers);
return 0;
}
#define LIMIT 100
#define PI 3.14159
#define C 299792.458
# include "my_file.h"
코드에 my_file.h 파일의 사본 포함
C에서 제공하는 표준 헤더 파일
const : ANSI C에 소개된 한정자, 초기화 이후 값 변경 불가
double : 유효숫자 15자리
float : 유효숫자 6자리
숫자를 입력 받을때, 여백(공백, 탭, 개행)은 건너뜀
하지만, 문자를 입력 받을 때는 건너뛰지 않음
AB C 3 55 77.7로 입력하면 제대로 실행되지 않음
세번째 문자로 ' '(공백문자)를 읽고나서 'C'를 10진 정수로 읽고자 하기 때문에 문제가 됨
if (expr)
statement
-> 조건식 (expr)이 참이면 문장 실행
-> flase : zero, true : non-zero
-> 단문이면 {} 생략
a = 1;
if (b == 3)
a = 5;
prinf("%d", a);
-> == 는 is equal to
-> b가 3이면 a=5
-> b가 3이 아니면 문장 (a=5) 실행 안함, printf()문 실행 시 1 출력
if (expr)
statement1
else
statement2
-> 조건식이 참이면 (expr이 0이 아니면) 문장1 실행,
그렇지 않으면 문장2 실행
-> 여러 문장을 포함해도 if-else문 전체가 하나의 문장
while (expr)
statement
-> 조건식이 참이면 (expr이 0이 아니면) 문장 실행 후, while 루프 처음으로 복귀, expr이 0이 될 때까지 반복
for (expr1; expr2; expr3)
statement
int main(void)
{
subfunction1(arguments);
}
subfunction1(arguments)
{
}
float maximum(float x, float y);
-> 컴파일러에게 maximum() 함수가 2개의 float형 인자를 가지고, 리턴 값은 float형이라는 것을 알려줌
C에서 문자열(string)은 문자(Character)의 배열이고, 배열 이름 자체가 하나의 pointer임
배열은 동일한 형을 갖고 개수가 많은 변수가 요구될 때 사용
int a[3]
char *p, s[100];