일부 번역: https://wikidocs.net/book/2494
책 사이트: http://knking.com/books/c2/index.html
1. Introducing C
C를 효과적으로 사용하는 법
- Learn how to avoid C pitfalls. (실수를 줄이는 방법을 익힌다)
- Use software tools to make programs more reliable. (소프트웨어 도구를 사용한다)
- Take advantage of existing code libraries. (코드 라이브러리들을 활용하여 코드를 안정화 한다.)
- Adopt a sensible set of coding conventions.
- Avoid "trick" and overly complex code. (허세 부리지 말고 코드는 간결하게)
- Stick to the standard. (표준을 지키자)
leak-finder
valgrind만 쓰고 있었는데, -fsanitize로도 할 수 있으며 각 장단점이 있다는 게 좀 신기하다. -fsanitize 옵션은 좀 더 있음.
- valgrind
- gcc -fsanitize = address
- gcc -fsanitize = leak
2. C 기초
2.4 변수와 할당
- type: 모든 변수들은 어떤 특정 데이터를 저장할 것인지를 정해주어야 한다.
- declare: 변수들은 반드시 선언되어야 사용할 수 있다. 참고로 C99에선 선언이 구문 직전에 오지 않아도 된다. C++이나 JAVA에선 프로그램을 작성할 때 변수가 필요한 순간 직전에 변수를 선언하는 것이 보편화 되어 있다.
- assignment:
- 보통 float형 변수에 할당된 소수점을 갖는 상수에는 끝에 f를 붙인다.
profit = 2150.48f;
추가해주지 않으면 컴파일할 때 에러가 날 수도 있음.
2.8 c 프로그램의 레이아웃
- token: 의미를 구성하는 최소 단위
- 식별자나 키워드 모두 토큰의 일종
- +, - 와 같은 연산자, 쉼표, 세미콜론과 같은 구두점, string literal(문자의 연속체) 모두 토큰의 일종이다.
3.1 printf
- conversion specifications:
conversion specifications
%[flags][width][.precision][length]specifier
- % : conversion specifications의 시작을 알림.
- flags(선택사항): 출력 형식을 지정. 왼쪽 정렬, 0 채움 등.
- width(선택사항): 출력 필드의 최소 폭.
- .pricision(선택사항): 출력할 정밀도를 지정. 주로 소수점 이하 자리수를 제한한다.
- specifier: 출력할 데이터의 형식(데이터 타입)을 지정.
escape sequence
- 특수한 문자를 표현하거나 제어하기 위해 사용되는 문자 조합. 일반적으로 역슬래시(\)로 시작. 이를 통해 출력할 수 없는 문자, 제어 문자, 특수 기능을 수행하는 문자를 프로그램에서 사용할 수 있게 한다.
- 왜 필요한가?
- 출력할 수 없는 문자 표현
- 특수 문자 출력: ", ', \ 와 같은 문자를 포함하려면 이스케이프 시퀀스를 사용해야 한다.
- 제어 문자 사용: 텍스트의 출력 형식을 제어하기 위해 사용:\n, \t
#include <stdio.h>
int main(void) {
printf("Hello\nWorld!\n");
printf("Tabbed\tText\n");
printf("Backslash: \\\n");
printf("Single quote: \'\n");
printf("Double quote: \"\n");
printf("ASCII 8진수: \101\n");
printf("ASCII 16진수: \x42\n");
return 0;
}