


#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;
}


#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;
}

1-2 는 헤더파일 stdlib.h 를 포함하지 않았다.1-1 예제는 변수 A 를 초기화하는 과정에서 designated initializer (C99) 를 사용했으나 예제 1-1 에서는 사용하지 않았다. 따라서 예제 1-1 은 C99 표준을 지원하지 않는 컴파일러에서 컴파일되지 않는 소스코드이다.for 문에서 사용할 임시 변수의 자료형을 size_t 에서 int 로 변경했다.1-2 예제는 변수 i (int) 를 출력하기 위해서 format specifier 를 %d 를 사용했고 1-1 에서는 변수 i (size_t) 를 출력하기 위해 %zu 를 사용했다.1-1 에서는 return statement 에 EXIT_SUCCESS 를 사용했고, 예제 1-2 에서는 literal 0 을 사용했다. (둘 다 동일한 표현이긴 하다.)The exit function근데 C 언어 처음 하는 사람들이 이걸 다 알 수가 있나? 처음부터 어렵게 나오네?
{} 와 [] 의 용도를 모두 찾아보자main 함수의 함수 몸체를 정의하기 위해서 사용한 braces ({})A 를 배열 자료형으로 선언하기 위해 사용한 brackets ([])A 의 각 원소를 초기화하기 위해 사용된 초기자(initializer)A 의 initializer 에서 designated initializer 로 사용된 brackets ([])for 구문(statement) 에서 반복 몸체를 정의하기 위해 사용한 {}A 의 원소를 지정하기 위해 사용된 subscripting expression 의 구성요소인 left bracket ([) 과 right bracket (]) [책] 모던 C: 전문가를 위한 C 작성법! (옌스 구스테드 지음; 남기혁 옮김)
[표준 문서] https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2310.pdf