#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