본문 바로가기

All154

[KNK 정리] 5장: Selection Statements 요약/정리 C언어에는 몇가지의 statements가 있다. 이번 장에서는 selection statements를 다룬다. - selection statements: if / switch 등 조건에 따라 분기하는 구문 - iteration statements: for, while, do-while 등 정해진 동작을 반복하는 구문 - jump statements: 코드를 점프하는 구문 - compound statement: 여러 개의 구문을 하나의 구문으로 만들기 위한 구문 - null statement: 아무 동작도 수행하지 않는 구문 logical expressions 우리는 4장에서 배웠듯 연산자를 통해서 다양한 expression을 만들 수 있다. 하지만 x + y와 같은 expression과 다르게.. 2021. 8. 18.
[KNK 정리] 4장: Expressions 요약/정리 C언어는 다른 언어와 달리 expression을 강조한다. 기본적으로 변수와 상수도 expression에 해당하며, 연산자를 통해서 새로운 expression을 만들 수도 있다. (x + y) * z에서 x, y, z, x + y, (x + y) * z는 모두 expression이라고 할 수 있다. 산술 연산자 (Arithmetic Operators) 단항 연산자 (Unary Operators) 산술 연산자 중 단항 연산자는 +, -가 있다. 이는 expression의 부호를 나타낸다. 예시): +1, -1, +x, -x 이항 연산자 (Binary Operators) + : 두 operand의 합을 구한다. - : 좌측 operand에서 우측 operand를 뺀 값을 구한다. * : 두 ope.. 2021. 8. 17.
[KNK 정리] 2장: C Fundamentals 요약/정리 간단한 C언어 프로그램의 구현 #include /* Standard Input/Output 관련된 함수의 정의를 포함한다 */ /* main 함수: 모든 C 언어 프로그램에 들어가는 필수적인 함수 */ intmain(void) { printf("To C, or not to C: that is the question.\n"); /* 문자열 출력 */ return 0; /* main 함수를 종료한다. 0은 프로그램이 정상적으로 종료됨을 의미한다. */ } 전처리(Preprocess), 컴파일(Compile), 링크(Link) C언어로 프로그램을 만들때 보통 전처리, 컴파일, 링크라는 세 단계를 순서대로 거친다. 전처리 전처리는 컴파일 이전에 #define, #include, #if, #endif와.. 2021. 8. 16.
[KNK 정리] 1장: Introducing C 커널을 보다보니까 C언어를 좀 더 이해하면 좋겠다 싶어서 KNK (C Programming: A Modern Approach)를 읽고 있다. 근데 정리를 안 하니까 자꾸 헷갈려서 요약 + 연습 문제 풀이를 해보려고 한다. 요약/정리 C언어의 역사 C언어는 1970년대 데니스 리치와 켄 톰슨이 당시 벨 연구소에서 진행하던 유닉스 운영체제를 위해 개발된 언어이다. C언어 이전까지만 해도 유닉스는 어셈블리어로 작성되었다. 어셈블리어는 개발도, 디버깅도 번거로울 뿐만 아니라 아키텍처에 의존적이기 때문에 이식성도 좋지 않았다. 그래서 데니스 리치와 켄 톰슨은 좀더 추상적인, 고수준의 언어를 적용하기로 했고, 그렇게 C언어가 탄생하게 되었다. C언어의 표준 컴퓨터공학을 공부하다보면 표준의 부재로 생기는 문제들이 매.. 2021. 8. 16.
공군 전자계산 훈련소 + 특기학교 후기 2달간의 훈련소, 특기학교 기간이 끝났다. 그동안의 과정을 정리해보려고 한다. 왜 전자계산에 지원했나 나는 군대에서 무슨 일을 하든 컴퓨터로 하는 일을 하고 싶었고, 그게 아니면 군대에 가기가 싫었다. 물론 지금 생각해보면 그냥 어디든 개인 시간을 많이 확보할 수 있는 곳으로 가도 좋았겠지 싶긴 하다. 공군 전자계산 지원할 때 사실 난 작년까지 군대에 올 계획이 없었다. 그래서 군대에 지원할 때 조금 불리했다. 그냥 육군으로 지원했으면 큰 상관이 없겠지만, 지정특기로 지원하려면 대학 전공, 자격증 점수가 많이 들어간다. 그래서 원래는 해군 정보보호병으로 지원했다가 자격증 점수가 부족해서 떨어졌고, 그 다음에 공군 전자계산으로 지원했는데 운좋게 비수기라 경쟁이 치열하지 않았다. 만약 전자계산 특기로 지원할.. 2021. 8. 16.
입대 전 생각 정리 최근 2달동안 미친듯이 달렸다. 개인적으로 진행하고 있는 프로젝트가 있는데, 낮에는 팀 프로젝트를 진행하고 집에 와서는 새벽까지 리눅스 커널을 보는 것을 반복했다. 그동안 느낀 것도 있고, 또 입대도 19일 남고 하니 이런저런 생각을 정리해본다. 문서화와 커밋 메시지는 정말 중요하다. 이전까지는 제대로 git을 쓰는 법을 몰랐다. 보통 1 - 3인 정도에서 소규모로 프로젝트를 진행할 때는 카톡 정도로 의사소통 해도 해결이 되었다. 심지어 문서화는 제대로 하지도 않았다. 하지만 커널을 공부하면서, 프로젝트 바깥에서 참여를 하려고 하니 눈앞이 깜깜했다. 문서도 부족하다고 느꼈다. 그리고 패치를 보내다 보니, 리뷰하는 사람이 쉽게 이해할 수 있도록 커밋을 잘게 쪼개고 메시지도 명확하게 남기는 게 중요했다. 프.. 2021. 5. 26.