본문 바로가기

분류 전체보기18

[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/06 C 연산자 우선순위 다음과 같은 코드가 있다고 하자. check()함수의 결과를 c에 저장하고 max와 비교해서 max보다 크면 c값을 새로운 max로 지정하고자 한다. if (c = check(arr1, arr2, num) > max) max = c; 코드 한 줄에 하는 일이 많아 보이는데, 실행되는 순서를 잘 보면 의도한 바와 다른 결과가 나오는 것을 알 수 있다. 우선, 이 줄이 실행되면 if() 안의 조건이 실행된다. check()함수가 실행되고 결과 값이 c에 저장된다 -> 아니다!! 왜냐하면 연산자 우선순위는 '>'가 '='보다 우선시되기 때문에, check 결과값 > max 의 값(true, false의 bool 값)이 c에 저장된다. 그렇기 때문에 c값은 1 또는 0 둘 중 하나를 가지게 .. 2022. 3. 6.