2. C언어

최준영·2021년 8월 25일
0

CS50

목록 보기
2/6

컴파일러


  • 직접 작성한 코드를 소스 코드라고 부른다.
  • 이를 2진수로 작성된 머신 코드로 변환해야 컴퓨터가 이해할 수 있다. 이런 작업을 컴파일러라는 프로그램이 수행해준다.
  • 터미널 창의 명령어 프롬프트에서 $ 기호 옆에 원하는 명령어를 입력하면 된다.
  • clang hello.c 라는 명령어는 clang이라는 컴파일러로 hello.c라는 코드를 컴파일하라는 의미이다.
  • 그 결과 a.out파일이 생성되며, ./a.out이라는 명령어를 실행하면 현재 디렉토리에 있는 a.out이라는 프로그램을 실행하게 해준다.

문자열


  • 문자열은 말 그대로 단어나 문장처럼 문자의 나열을 의미한다. string이라고 한다.
  • c 언어에서는 변수가 저장하는 데이터의 종류를 명확하게 명시해줘야 한다.
string answer = "edison";
  • 컴퓨터 메모리 어딘가에 answer 이름을 가진 edison이라는 값이 저장되어 있다.
  • printf("hello, %s\n", answer); %s로 문자열 인자를 받을 수 있다.
  • cs50.h와 같은 헤더파일이 존재할 경우 컴파일 할 때 -l을 사용하여 해당 파일을 연결(링크라고한다.)해야한다.clang string.c -lcs50
  • 간단하게 make string으로 컴파일을 수행할 수 있다.

자료형, 형식 지정자


  • 데이터 타입
    • bool : true or false를 나타냄
    • char : 문자 하나
    • int : 4바이트 크기를 가지는 정수
    • long : 더 큰 크기의 정수
    • float : 부동소수점을 갖는 실수
    • double : 부동 소수점을 갖는 더 큰 실수
  • 형식 지정자
    • %c : char
    • %f : float, double
    • %i : int
    • %li : long
    • %s : string

사용자 정의 함수, 중첩 루프


#include <stdio.h>

void coung(int n);

int main(void)
{
  cough(3); // 함수 호출
}

void cough(int n) // 사용자 정의 함수
{
  for(int i = 0; i < n; i++)
  {
    printf("coung\n");
  }
}
  • c 언어에서는 main 함수에서 호출하기 전에 함수가 존재한다는 것을 미리 알려줘야한다.
  • 함수의 void coung(int n)에서 void는 함수의 처리 결과값의 자료형을 의미한다. 즉, 출력의 종류이다. int n은 함수에서 사용할 수 있는 인자를 받을 수 있는 매개변수이다. 즉, 입력의 종류이다.

하드웨어의 한계


  • 컴퓨터는 RAM(랜덤 액세스 메모리)라는 물리적 저장장치를 포함하고 있다.
  • 작성한 프로그램은 구동 중에 RAM에 저장되는데, RAM은 유한한 크기의 비트만 저장할 수 있기 때문에 때때로 부정확한 결과를 내기도 한다.
float x = 1;
float y = 10;
x/y = 0.10000000149011611938476562500000000000000000000000
  • 부동 소수점의 부정확성 : 정확한 결과는 0.1이 되어야 하지만, 저장가능한 비트 수가 유한하기 때문에 이러한 결과를 산출한다.
  • 정수의 부정확성 : int형 변수 i에 1이라는 값에 저장하고 2을 계속 곱하다보면 다음과 같은 결과를 출력한다.
...
1073741824
overflow.c:6:25: runtime error: signed integer overflow: 1073741824 * 2 cannot be represented in type 'int'
-2147483648
0
0
...
  • int는 32개의 비트로 이루어져 있기 때문에 그 이상의 숫자를 저장할 수 없기 때문이다ㅏ.
profile
do for me

0개의 댓글