C programming: A Modern Approach(1)

Erdos·2024년 12월 1일
0

감상

목록 보기
43/43
post-thumbnail

일부 번역: https://wikidocs.net/book/2494
책 사이트: http://knking.com/books/c2/index.html

1. Introducing C

C를 효과적으로 사용하는 법

  1. Learn how to avoid C pitfalls. (실수를 줄이는 방법을 익힌다)
  2. Use software tools to make programs more reliable. (소프트웨어 도구를 사용한다)
  3. Take advantage of existing code libraries. (코드 라이브러리들을 활용하여 코드를 안정화 한다.)
  4. Adopt a sensible set of coding conventions.
  5. Avoid "trick" and overly complex code. (허세 부리지 말고 코드는 간결하게)
  6. Stick to the standard. (표준을 지키자)

leak-finder

valgrind만 쓰고 있었는데, -fsanitize로도 할 수 있으며 각 장단점이 있다는 게 좀 신기하다. -fsanitize 옵션은 좀 더 있음.

  1. valgrind
  2. gcc -fsanitize = address
  3. 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. 서식 입출력(Formatted Input/Output)

3.1 printf

  • conversion specifications:

conversion specifications

%[flags][width][.precision][length]specifier
  1. % : conversion specifications의 시작을 알림.
  2. flags(선택사항): 출력 형식을 지정. 왼쪽 정렬, 0 채움 등.
  3. width(선택사항): 출력 필드의 최소 폭.
  4. .pricision(선택사항): 출력할 정밀도를 지정. 주로 소수점 이하 자리수를 제한한다.
  5. 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"); // 8진수 A 출력
    printf("ASCII 16진수: \x42\n"); // 16진수 B 출력
    return 0;
}
profile
수학을 사랑하는 애독자📚 Stop dreaming. Start living. - 'The Secret Life of Walter Mitty'

0개의 댓글