본문 바로가기

모던 C6

레벨 1 친숙 - 04 계산 표현하기 이 장에서 다루는 내용 산술 연산 수행하기 오브젝트 수정하기 불 타입 다루기 삼항 연산자로 조건부 컴파일하기 평가 순서 지정하기 이 장에서 연산을 수행하는 데 사용하는 값이나 오브젝트의 타입은 대부분 size_t로 지정한다. 이 타입으로 선언한 값은 '크기(size)'를 나타내며 음수가 될 수 없고 0부터 시작한다. 즉, 수학에서 흔히 자연수라고 부르는 음이 아닌 정수를 의미한다. 그런데 컴퓨터는 유한하기 때문에 자연수 전체를 직접 표현할 수 없고, 무한에 가까운 값을 적절히 근사한다. size_t로 표현할 수 있는 값의 상한은 SIZE_MAX로 표현한다. SIZE_MAX는 꽤 큰 값을 나타낸다. 플랫폼에 따라 다음 값 중 하나로 정해진다. 2^16 -1 = 65535 2^32 -1 = 429496729.. 2024. 2. 23.
레벨 1 친숙 - 03 결국은 제어 이 장에서 다루는 내용 if를 이용한 조건부 실행 도메인에 대해 반복하기 다중 선택하기 C 언어는 if, for, do, while, switch라는 다섯 가지 조건부 제어문(conditional control statement)을 제공하며, 이 장에서 이들에 대해 하나씩 살펴볼 것이다. if는 불리언 표현식의 값을 기준으로 조건부 실행(conditional execution) 기능을 제공한다. for, do, while은 반복문(iteration)이고, switch는 정수 값을 기준으로 다중 선택(multiple selection) 기능을 제공한다. 3.1 조건부 실행 첫 번째 살펴볼 구문은 if라는 키워드로 표현한 것으로 다음과 같이 작성한다. if (i > 25) { j = i - 25; } 이 코.. 2024. 2. 3.
레벨1 친숙 - 들어가며 이 레벨은 C 프로그램을 잘 작성하고 사용하는 데 필요한 지식을 제공한다. 여기서 잘 작성한다는 말은 C 언어의 최신 규격을 이해하는 것이며, 초창기 C 언어의 다양한 방언에서 저지르기 쉬운 실수를 피하고, 이식 가능한 새로운 구문을 사용한다는 뜻이다. 준비 C 언어는 제약이 없는 편이다. 다시 말해 프로그래머가 원한다면 자폭에 가까운 일도 할 수 있다. 먼저 몇 가지 제약 사항에 대해 알아보자. C 언어에서 가장 위험한 구문은 타입 변환(cast)이다. 레벨 1에서는 이에 대한 설명을 생략하고, 우선 빠지기 쉬운 함정 몇 가지를 소개한다. 이 레벨에서 받아들이기 힘든 내용 중 일부는 다음과 같이 일정한 순서에 따라 점진적으로 소개한다. 정수 타입은 부호 없는(unsigned) 버전 위주로 소개한다. 포.. 2024. 2. 3.
레벨0 만남 - 02 프로그램의 핵심 구조 이 장에서 다루는 내용 C 언어 문법 식별자 선언하기 객체 정의하기 컴파일러에게 지시하기 실전에서 다룰 프로그램은 앞 장의 예제 1-1보다 훨씬 다양하고 복잡하게 구성되겠지만, 기본 골격은 거의 비슷하다. C 프로그램에서 고려할 두 가지 관점이 있는데, 하나는 컴파일러가 이해할 수 있도록 프로그램을 작성하는 구문 관점이고, 다른 하나는 우리가 의도한 대로 작동하도록 프로그램을 작성하는 의미 관점이다. 이 장에서는 구문 관점과 의미 관점의 세 가지 핵심 요소인 선언, 정의, 문장에 대해 살펴본다. 2.1 문법 C 프로그램의 구조를 보면 특정한 문법에 따라 여러 텍스트 요소가 엮인 것을 알 수 있다. 텍스트 요소는 다음과 같다. 특수어 : #include, int, void, double, for, retu.. 2024. 2. 3.