본문 바로가기

공부16

[TIL]2022/03/22 C 다중소스 분할 컴파일 C 다중소스 분할 컴파일 C로 큰 프로젝트를 만들 때는 한 .c 파일에 모든 코드를 작성하지 않는다. main 함수가 들어있는 main.c 랑 나머지 함수들이 들어가는 함수1.c, 함수2.c, 헤더.h 등등으로 여러 개의 c 파일을 생성해서 컴파일 할 때 합친다. 컴파일할 때 합친다는 건 알겠는데 각 파일마다 들어있는 내용을 어떻게 작성해야 하는 건지에는 생각해보지 않았다. 예를 들어서 다음과 같은 프로그램이 있다고 하자. 다중소스를 사용하지 않고 하나의 c 파일에서 프로그램을 작성한다면 다음과 같다. #include void director(); void film(); int main(){ printf("Executing main()\n"); film(); director(); return 0; } v.. 2022. 3. 22.
[TIL]2022/03/09 C 포인터 연산 int main() { int arr[3] = { 1,2,3 }; printf("%p\n", arr); printf("%p\n", arr + 1); printf("%p\n", arr + 2); printf("%p\n", &arr[0]); printf("%p\n", &arr[1]); printf("%p\n", &arr[2]); return 0; } 위에 세개랑 아래 세개는 같은 값을 출력한다. arr는 배열의 첫 원소를 가리키는 포인터이다. 여기에 + 1을 하면 주소값(16길이의 hex)에 + 1을 하는 게 아니라 배열의 원소의 크기 만큼 1 번 더한다는 뜻이다. arr + 1을 하면 arr 주소값에 arr 배열 원소의 크기를 한 번 더한다. arr + 2을 하면 arr 주소값에 arr 배.. 2022. 3. 9.
[TIL]2022/03/08 C 실수 자료형의 오차 변수에 저장되는 값은 0,1의 비트 꼴이라는 것은 알고 있다. int 자료형의 경우, 맨 앞의 sign bit는 +, -를 나타내고, 그 뒤의 비트들은 이진법으로 정수 값을 나타낸다. float, double 등 실수 자료형을 비트로 저장하는 방법에는 1. 고정소수점 방식 2. 부동소수점 방식이있다. 1. 고정소수점 방식 실수를 정수 부분, 소수 부분으로 나누고 그 사이에 소수점(.)이 있다고 생각하게 표현한 것. float의 경우 4 byte == 32 bit 이므로, 맨 앞에는 부호 bit가 오고 그 뒤에 15bit는 정수를 표현하고 나머지 16bit는 소수점 뒷 부분을 표현한다. double의 경우 8 byte니까 정수부가 31 bit, 소수부가 32 bit다. 정수부분은 소.. 2022. 3. 8.
[TIL]2022/03/05 매크로 매크로 쓸 때는 return 안쓴다. 예를 들어서 두 수를 비교해서 앞에 게 더 크면 1을 반환하고 아니면 0을 반환하는 삼항 연산을 매크로로 구현하고 싶다고 하자. #define Check(x,y) x > y ? 1 : 0 이렇게 쓰는 게 맞다. 매크로는 어떤 값을 반환하는 함수를 만드는 게 아니다. 그냥 계산하는 매크로를 만드는 거다. #define Check(x,y) return (x > y ? 1 : 0) 그래서 이거 처럼 return 문을 넣으면 '식이 필요합니다'라는 오류가 뜬다. 삼항 연산자 삼항 연산자를 써서 return 값을 받고 싶을 때는 int check(int x, int y){ x > y ? return 1 : return 0; } 이렇게 return을 값 마다 앞에 쓰는 .. 2022. 3. 5.