C unmanaged 4

getchar() 버퍼 비우는법

while (getchar() != '\n') continue; 위 코드는 입력 버퍼를 비우는 행위를 의미합니다. int c = getchar(); 예를 들어 이때 입력을 'y' 라고 했다면 c 에는 'y' 문자의 아스키코드 값이 저장되어 있겠지요. 이런 상태에서 질문자님께서 하신대로 getchar 부분을 c 로 바꿔 while ( c != '\n' ) continue; 이렇게 하게되면 c 에는 y의 아스키코드 값인 121 정수가 들어있기때문에 c는 영원히! 절대! '\n' 가 될 수 없습니다. 그냥 c는 값을 저장하고 있는 변수일 뿐이기 때문에 임의로 c = '\n'; 이런식으로 바꿔주지 않는 이상 계속 121 값을 저장하고 있는 상태입니다. 따라서 while 문이 더 이상 돌지 않으려면 c=='\n'..

C unmanaged 2021.06.15

printf() 작동원리

저렇게 순차적으로 왼쪽부터 아래에 차례대로 스택에 저장되는데 float 의 경우엔 원래 4byte 이지만 printf 함수로 인해 double로 저장됨 고로 8byte를 할당받음.(왜그런진 모름) 고로 저렇게 8byte 8byte 4byte 이렇게 차례대로 저장되는데 만약에 변환지정자가 decimal 일경우 얘 같은경우 한번에 4byte만 읽어들이므로 위에 차례대로 4byte 4byte 4byte 이렇게만 읽고 나머지 데이터는 안읽음.. 고로 데이터가 막 뒤엉켜서 이상한 값이 나오게됨. 또, float double은 애초에 실수형인데 이걸 lld 같은 읽어들이는 데이터크기는 8byte로 똑같지만 원래 정수형한테만 쓰는걸 써버리면 역시나 마찬가지로 이상한 값이 나오게 된다. 고로 데이터를 출력할땐 그에 맞..

C unmanaged 2021.06.02

컴퓨터의 작동 원리

ROM BIOS - ROM 인걸로 보아 읽기만 가능하고 쓸수는 없다. BIOS의 약자가 Basic Input Output System 인걸로 보아 말그대로 기본 입출력을 위한 시스템이라고 볼 수 있을듯? CPU는 직접적으로 보조기억장치에 접근할 수 없음. 오로지 주기억장치(RAM)에만 상호작용함. 운영체제(OS)는 보조기억장치에 저장됨. 그렇다면 CPU는 어떻게 운영체제를 불러올 수 있는것인가? 보조기억장치에 저장된 운영체제에서 CPU가 읽어드릴 운영체제 정보를 RAM으로 복사해서 읽는방식임. 운영체제 뿐만아니라 그외 프로그램도 다 이런 똑같은 방식일걸로 보인다... 시스템 프로그램 - 컴퓨터 바탕화면을 바꿀때 사용하는 프로그램같은 운영체제의 핵심 프로그램이라고 하기에는 뭐한 그런 프로그램들???? 응용..

C unmanaged 2021.05.14