g++ test.c -o main

다시 시작해보자 C

<aside> 💡 6782 = 4×16^3 + 1×16^2 + 8×16^1 + 14×16^0 = 0x418E

앞에 붙은 0x 는 이 수가 16 진수로 나타나있다는 것을 알려줍니다

</aside>

<aside> 💡 8 비트로 나타낼 수 있는 수, 다시말해 8 자리 이진수로 나타낼 수 있는 최대의 수는 아래와 같이00000000_2 ~ 11111111_2 = 0 ~ 255 = 0 ~ 0xFF 0 부터 255 로 총 256 개의 수를 나타내게 됩니다 $(2^8 = 256)$

printf('%x', a) 하면 a를 16진수로 나타냄, %d는 10진수 printf("b : %6.3f \\n", b);  전체 자리수를 6으로 맞추고 소수점 이하 3째 자리까지만 표시

</aside>

Untitled

<aside> 💡 워드(Word) 라고 부르는 단위가 있습니다. 컴퓨터에서 연산을 담당하는 CPU 에는 레지스터(register) 라는 작은 메모리 공간

이러한 레지스터의 크기는 컴퓨터 상에서 연산이 실행되는 최소 단위라고 볼 수 있고, 이 크기를 워드 라고 부릅니다 64 비트 컴퓨터의 경우 1 워드가 64bit, 즉 8byte가 됩니다.

</aside>

<aside> 💡 32bit 컴퓨터의 레지스터의 크기는 32bit. (핸드폰 번호 자리 수) 나올 수 있는 번호 개수는 2^32개 주소의 기본 단위는 1byte (핸드폰 번호 1개 size) 그래서 1byte * 2^32 = 4,294,967,296 = 4GB
즉 4GB의 주소를 레지스터가 표현할 수 있다는 뜻임 (주소록 총 4GB)

</aside>

<aside> 💡 switch 문과 if else문은 사뭇 다릅니다. switch 의 경우 내부적으로 jump table 이라는 것을 생성합니다. 이 때, jump table 의 크기는 case 의 값들에 따라 달라지는데, 예를 들어서 어떤 switch 문의 경우 case 1: ~ case 10: 까지 있었다고 합시다. 그렇다면 jump table 에는 값들이 0 부터 9 까지 들어가게 됩니다.

</aside>

Static


<aside> 💡 global variable과 비슷, memory allocation이 일어난 후 프로그램이 종료될 때까지 소멸되지 않으면서 재초기화도 일어나지 않음

global variable과는 다르게 선언된 파일 내부에서만 접근 가능

선언만 해두면 내부 값이 0으로 초기화

함수 앞에 붙는다면, 정적 함수로 만들어 준거임. 다른 파일에서 같은 함수명끼리의 충돌을 막기 위해, static을 붙이면 그 파일 안에서만 사용가능하게 만든거임.

</aside>

포인터