[CS50] 컴파일링
TIL
컴파일링이란C 코드를 실행하려면 컴파일을 해야 한다. 텍스트 형식의 C 코드가 컴퓨터가 해석 가능한 파일로 변환되는 과정을 알아보자.#include int main(void){ printf("hello, world\n");}main 함수는 프로그램의 시작점이고, printf는 출력 함수다. printf를 사용하려면 stdio.h 라이브러리가 필요하다.stdio.h는 C 언어로 작성된 헤더 파일로 printf 함수의 프로토타입을 가지고 있어, clang 컴파일러가 printf가 무엇인지 알 수 있게 한다. $ clang hello.c$ ./a.out컴파일 결과 a.out이라는 실행 파일이 생성된다. 다른 이름으로 컴파일하려면 -o 옵션을 사용한다.$ clang -o hello hello.c CS50 ..
[CS50] 하드웨어의 한계와 오버플로우
TIL
메모리의 한계컴퓨터는 RAM(Random Access Memory)이라는 물리적 저장장치에 프로그램을 저장한다.RAM은 유한한 크기의 비트만 저장할 수 있기 때문에 때때로 부정확한 결과를 낸다. 부동소수점의 부정확성실수 x를 y로 나누는 프로그램을 작성해보자.#include #include int main(void){ float x = get_float("x: "); float y = get_float("y: "); printf("x / y = %.50f\n", x / y);}소수점 50자리까지 출력하도록 하고, x에 1, y에 10을 입력하면 다음과 같은 결과가 나온다.정확한 결과는 0.1이어야 하지만, float에서 저장 가능한 비트 수가 유한하기 때문에 부정확한 결과가 나온다. 정수..
[CS50] C 언어 - 사용자 정의 함수와 중첩루프
TIL
사용자 정의 함수반복적으로 작성하는 코드를 함수로 만들면 코드를 간결하고 이해하기 쉽게 만들 수 있다. "cough"를 세 번 출력하는 프로그램을 작성해보자.#include int main(void){ printf("cough\n"); printf("cough\n"); printf("cough\n");} 반복문을 사용하면 더 간결해진다.#include int main(void){ for (int i = 0; i 이제 함수를 만들어보자.void cough(void)로 함수를 정의한다. main 함수에서 cough()를 호출하면 우리가 정의한 대로 동작한다.#include void cough(void){ printf("cough\n");}int main(void){ for ..