[Modern C] #0. Chapter 01 ~ 02

문연수·2023년 1월 22일
0

Modern C

목록 보기
1/2
post-thumbnail

1. 들어가며

- 1. 터미널에서 컴파일해보기

#include <stdlib.h>
#include <stdio.h>

int main(void) {
	double A[5] = {
		[0] = 9.0,
		[1] = 2.9,
		[4] = 3.E+25,
		[3] = .00007
	};

	for (size_t i = 0; i < 5; ++i) {
		printf("element %zu is %g, \tits square is %g\n",
			i,
			A[i],
			A[i] * A[i]);
	}

	return EXIT_SUCCESS;
}

- 2. 예제를 직접 테스트하기

- 3. 예제 1-2 수정하기

#include <stdio.h> // 1: include the header file

int main(void) { // 2: fix the main function declaration
	int i;
	double A[5] = {
		9.0,
		2.9,
		3.E+25,
		.00007,
	};

	for (i = 0; i < 5; i++) {
		printf("element %d is %g, \tits square is %g\n",
			i,
			A[i],
			A[i] * A[i]);
	}

	return 0;
}

- 4. 예제 1-1 과 1-2 의 추가적인 차이점

  1. 예제 1-2 는 헤더파일 stdlib.h 를 포함하지 않았다.
  2. 1-1 예제는 변수 A 를 초기화하는 과정에서 designated initializer (C99) 를 사용했으나 예제 1-1 에서는 사용하지 않았다. 따라서 예제 1-1 은 C99 표준을 지원하지 않는 컴파일러에서 컴파일되지 않는 소스코드이다.
  3. for 문에서 사용할 임시 변수의 자료형을 size_t 에서 int 로 변경했다.
  4. 1-2 예제는 변수 i (int) 를 출력하기 위해서 format specifier%d 를 사용했고 1-1 에서는 변수 i (size_t) 를 출력하기 위해 %zu 를 사용했다.
  5. 예제 1-1 에서는 return statementEXIT_SUCCESS 를 사용했고, 예제 1-2 에서는 literal 0 을 사용했다. (둘 다 동일한 표현이긴 하다.)
    참조: C17 표준 문서 (ISO/IEC9899:2018) 7.22.4.4.5 The exit function

근데 C 언어 처음 하는 사람들이 이걸 다 알 수가 있나? 처음부터 어렵게 나오네?

2. 프로그램의 핵심 구조

- 1. {}[] 의 용도를 모두 찾아보자

  1. main 함수의 함수 몸체를 정의하기 위해서 사용한 braces ({})
  2. 변수 A 를 배열 자료형으로 선언하기 위해 사용한 brackets ([])
  3. 변수 A 의 각 원소를 초기화하기 위해 사용된 초기자(initializer)
  4. 변수 Ainitializer 에서 designated initializer 로 사용된 brackets ([])
  5. for 구문(statement) 에서 반복 몸체를 정의하기 위해 사용한 {}
  6. 변수 A 의 원소를 지정하기 위해 사용된 subscripting expression 의 구성요소인 left bracket ([) 과 right bracket (])

출처

[책] 모던 C: 전문가를 위한 C 작성법! (옌스 구스테드 지음; 남기혁 옮김)
[표준 문서] https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2310.pdf

profile
2000.11.30

0개의 댓글