다음 프로그램에서는 oC=(5/9)(oF-32)라는 공식을 사용하여 화씨 온도와 다음 표를 인쇄한다.
섭씨 또는 섭씨 등가물:
1 -17
20 -6
40 4
60 15
80 26
100 37
120 48
140 60
160 71
180 82
200 93
220 104
240 115
260 126
280 137
300 148
프로그램 자체는 여전히 메인이라는 단일 함수의 정의로 구성되어 있다. 그것은 인쇄된 것보다 길다.
"안녕, 세계"라고 하지만 복잡하지는 않다. 코멘트, 선언, 변수 등 몇 가지 새로운 아이디어를 소개한다.
산술 식, 루프 및 형식화된 출력.
#include <stdio>.h>
/* Fahrenheit-Celsius 표 인쇄
fahr = 0, 20, ..., 300 */의 경우
주지의
{
화씨, 섭씨.
아래, 위, 층계;
하한 = 0; /* 온도 척도 하한 */
상한 = 300; /* 상한 */
단계 = 20; /* 단계 크기 */
화씨 = 더 낮음;
와중 (fahr <= upper){
섭씨 = 5 * (190r-32) / 9;
인쇄%d\t%d\n", 화씨, 섭씨);
fahr = fahr + step
}
}
두 줄
/* Fahrenheit-Celsius 표 인쇄
fahr = 0, 20, ..., 300 */의 경우
이 경우 프로그램의 기능을 간략하게 설명하는 코멘트가 될 수 있다. /*와 */ 사이의 모든 문자는 다음에 의해 무시됨
컴파일러; 그것들은 프로그램을 이해하기 쉽게 하기 위해 자유롭게 사용될 수 있다. 코멘트는 다음과 같은 장소에 나타날 수 있다.
빈 캔, 탭 또는 새 줄 캔.
C에서 모든 변수는 사용하기 전에 선언되어야 하며, 일반적으로 실행되기 전에 함수의 시작 부분에 선언되어야 한다.
진술들 선언문은 변수의 속성을 발표한다. 선언문은 다음과 같은 변수의 이름과 목록으로 구성된다.
화씨, 섭씨.
아래, 위, 층계;


형식 int는 나열된 변수가 정수라는 것을 의미한다. 플로트와 대조적으로 부동소수(float point), 즉 숫자를 의미한다.
부분적인 부분을 가질 수 있는. int와 float의 범위는 모두 사용하는 기계에 따라 달라진다; 16비트 ints,
-32768과 +32767 사이에 위치하며, 32비트 int와 마찬가지로 일반적이다. 플로트 번호는 일반적으로 32비트 수량으로, 적어도
일반적으로 약 10-38에서 1038 사이의 6개의 중요한 숫자와 크기
.
C는 int 및 float 이외에 다음과 같은 몇 가지 다른 데이터 유형을 제공한다.


char 

 character - a single byte

 short

 short integer

 long

 long integer

 double

 double-precision floating point


이 물체(object)의 크기 또한 기계에 의존한다. 또한 이러한 기본 유형의 배열, 구조 및 조합이 있다.
그들에게 보내는 조언과 그것들을 되돌려주는 기능들, 우리가 적절한 때에 만날 수 있는 모든 것.
온도 변환 프로그램의 계산은 할당 문으로 시작한다.


lower = 0; 

upper = 300; 

step = 20; 


변수를 초기 값으로 설정하는 방법. 개별 문장은 세미콜론으로 종료된다.
표의 각 행은 동일한 방법으로 계산되므로 출력 라인당 1회 반복하는 루프를 사용한다. 이것이 그 목적이다.
순환하는 동안에
와중 (fahr <= upper){
...
}
while 루프는 다음과 같이 작동한다. 괄호 안의 조건을 시험한다. 참일 경우(fahr가 상한보다 작거나 같음),
루프 본체(브레이스로 둘러싸인 세 개의 문장)가 실행된다. 그런 다음 상태를 다시 테스트하고, 만약 사실이라면,
육체가 다시 실행된다. 테스트가 거짓이 되면(fahr이 상부를 초과함) 루프가 종료되며, 실행은 다음 단계에서 계속된다.
루프를 따르는 진술 이 프로그램에는 더 이상의 진술이 없어 종료된다.
본문은 온도 변환기에서와 같이 가새로 둘러싸인 하나 이상의 문장이거나 단일 문장이 될 수 있다.
의 경우와 같이 교정기를 착용하지 않고.
한편 (i < j)
i = 2 * i;
어느 경우든, 우리는 항상 그 동안 통제된 진술들을 하나의 탭 스톱에 의해 들여쓰게 될 것이다. (그것은 우리가 4로 나타낸 것임)
공간) 루프 안에 어떤 문장이 있는지 한눈에 볼 수 있도록 한다. 들여쓰기는 의 논리적 구조를 강조한다.
프로그램 C 컴파일러는 프로그램이 어떻게 보이는지 신경쓰지 않지만, 적절한 들여쓰기 및 간격은 매우 중요하다.
사람들이 쉽게 읽을 수 있는 프로그램을 만드는 것. 한 줄에 한 문장씩만 쓰고 주위에 빈 칸을 사용하는 것이 좋다.
운영자가 그룹화를 명확히 한다. 사람들은 열정적인 신념을 가지고 있지만 교정기의 위치는 덜 중요하다. 우리는 가지고 있다.
몇 가지 인기 있는 스타일 중 하나를 선택했다. 자신에게 맞는 스타일을 선택한 다음, 꾸준히 사용해라.
대부분의 일은 루프 본체에서 이루어진다. 섭씨 온도는 계산되어 변수에 할당된다.
그 진술에 열심인.
섭씨 = 5 * (190r-32) / 9;
단순히 5/9를 곱하기보다 5를 곱하고 9를 곱하는 이유는 다른 많은 언어에서와 마찬가지로 C에서
정수 분할 잘림: 모든 부분 부분 폐기. 5와 9는 정수니까. 5/9는 0으로 잘라서
모든 섭씨 온도는 0으로 보고될 것이다.
이 예는 또한 printf가 어떻게 작동하는지 조금 더 보여준다. printf는 범용 출력 포맷 기능이다.
7장에 자세히 설명하겠다. 첫 번째 인수는 인쇄할 문자열을 나타내며 각 %는 인쇄 위치를 나타낸다.


다른 (두 번째, 세 번째, ...)의 주장 중에서 대체하고, 어떤 형태로 인쇄할 것인가. 예를 들어 %d은(는)
정수 인수, 그러니까 문장이.
인쇄%d\t%d\n", 화씨, 섭씨);
화씨 및 섭씨 두 정수의 값이 인쇄되고 그 사이에 탭(\t)이 있다.
인쇄물의 첫 번째 인수의 각 % 구성은 해당하는 두 번째 인수, 세 번째 인수 등과 쌍으로 구성된다.
그들은 숫자와 종류에 따라 적절하게 맞춰야 한다. 그렇지 않으면 당신은 틀린 답을 얻게 될 것이다.
그런데, printf는 C 언어의 일부가 아니다; C 자체에 정의된 입력이나 출력은 없다. printf는 그저 유용하다.
일반적으로 C 프로그램이 접근할 수 있는 기능의 표준 라이브러리에서 기능한다. printf의 동작은
그러나 ANSI 표준에서 정의되므로, ANSI 표준의 속성은 다음 사항을 준수하는 컴파일러 및 라이브러리와 동일해야 한다.
표준
C 자체에 집중하기 위해 7장까지는 입력과 출력에 대해 별로 이야기하지 않는다. 특히, 우리는 연기할 것이다.
그때까지 포맷된 입력. 번호를 입력해야 하는 경우 섹션 7.4. scanf는 다음과 같다.
출력물을 쓰는 대신에 입력을 읽는 것을 제외하고, printf와 같다.
온도 변환 프로그램에 몇 가지 문제가 있다. 더 간단한 것은 생산량이 그리 예쁘지 않다는 것이다.
왜냐하면 그 숫자들은 우열이 아니기 때문에. 그것은 쉽게 고칠 수 있다; 인쇄물 문장의 각 %d을 넓히면
인쇄된 숫자들은 그 분야에서 우표화 될 것이다. 예를 들어, 우리는 이렇게 말할 수 있다.
printf("%3d %6d\n", 화씨, 섭씨);
세 자리 너비의 필드에서 각 행의 첫 번째 숫자를, 여섯 자리 너비의 필드에서 두 번째 숫자를 다음과 같이 인쇄한다.
0 -17
20 -6
40 4
60 15
80 26
100 37
...
더 심각한 문제는 우리가 정수 산수를 사용해 왔기 때문에 섭씨 온도가 매우 정확하지 않다는 것이다.
인스턴스 0oF는 실제로 -17이 아니라 -17.8oC 정도 입니다. 더 정확한 답을 얻기 위해서는 부동 소수점 산수를 사용해야 한다.
정수 대신에 이를 위해서는 프로그램의 일부 변경이 필요하다. 두 번째 버전은 다음과 같다.
#include <stdio>.h>
/* Fahrenheit-Celsius 표 인쇄
fahr = 0, 20, ..., 300; 부동 소수점 버전 */
주지의
{
화씨(섭씨), 섭씨(섭씨)를 띄운다.
아래, 위, 층계;
하한 = 0; /* 온도 조절 눈금 하한 */
상한 = 300; /* 상한 */
단계 = 20; /* 단계 크기 */
화씨 = 더 낮음;
와중 (fahr <= upper){
섭씨 = (5.0/9.0) * (195r-32.0);
printff%3.0f %6.1f\n", fahr, s℃);
fahr = fahr + step
}
}
이것은 화씨나 섭씨 등이 부유하다고 선언되고 전환식도 그 이전과 많이 같다.
보다 자연스런 방법으로 쓰여진 이전 버전에서는 정수 분할로 인해 5/9를 사용할 수 없었다.
영점까지 상수의 소수점은 부동소수점임을 나타내지만, 5.0/9.0은 부동소수점이기 때문에 잘리지 않는다.
두 부동 소수점 값의 비율
산술 연산자가 정수 피연산자를 갖는 경우 정수 연산이 수행된다. 산술 연산자가 산술 연산자가 있는 경우


부동 소수점 피연산자와 정수 피연산자 1명이지만, 정수는 작업 전 부동 소수점으로 변환된다.
끝났어 만약 우리가 (fahr-32)라고 썼다면, 32는 자동으로 부동소수로 변환될 것이다. 그럼에도 불구하고 글쓰기는
정수 값이 있더라도 명시적 소수점이 있는 부동 소수점 상수는 부동 소수점을 강조한다.
인간 독자의 자연
정수를 부동소수로 변환하는 경우의 자세한 규칙은 제2장에 있다. 일단, 그 임무는
화씨 = 더 낮음;
그리고 테스트
와중(와중 <=상위)
또한 자연적인 방법으로 작용한다 - int는 수술이 끝나기 전에 부유물로 전환된다.
인쇄 f 변환 규격 %3.0f에 따르면 부동 소수점 번호(여기 화씨)는 최소 3개 이상 인쇄되어야 한다.
문자 폭, 소수점 및 소수점 없음. %6.1f는 인쇄할 다른 숫자(숫자)를 설명한다.
최소 6자 이상의 너비, 소수점 뒤에 1자리. 출력은 다음과 같다.
0 -17.8
20 -6.7
40 4.4
...
규격에서 폭과 정밀도를 생략할 수 있다: %6f는 숫자가 최소 6자 이상이어야 한다고 명시한다. %.2f
소수점 뒤에 2자를 지정하지만 폭은 제한되지 않는다. %f는 단순히 숫자를 다음과 같이 인쇄하라고 말한다.
부동 소수점

%d 

 print as decimal integer

 %6d

 print as decimal integer, at least 6 characters wide

 %f

 print as floating point

 %6f

 print as floating point, at least 6 characters wide

 %.2f

 print as floating point, 2 characters after decimal point

 %6.2f

 print as floating point, at least 6 wide and 2 after decimal point



그 중에서도 printf는 또한 8진수의 %o, 16진수의 %x, 문자의 %c, 문자열의 %s, 그리고 %%를 인식한다.
그 자체로
연습 1-3. 표 위에 제목을 인쇄하도록 온도 변환 프로그램을 수정한다.
연습 1-4. 화씨 테이블에 해당하는 온도를 출력하는 프로그램을 작성한다.

1장 - 자습서 소개

C의 간단한 소개부터 시작합시다. 우리의 목표는 언어의 필수적인 요소들을 실제 프로그램에서 보여주는 것이다.

세부사항, 규칙, 예외사항 등에 얽매이지 않고 현시점에서 우리는 완전하거나 심지어 정확해지려고 노력하지 않는다.

(예제가 정확해야 한다는 것을 저장하십시오.) 우리는 가능한 한 빨리 당신이 글을 쓸 수 있는 지점으로 당신을 데려가고 싶다.

유용한 프로그램, 그리고 그러기 위해서는 변수와 상수, 산술, 제어 흐름,

함수, 그리고 입력과 출력의 기초. 우리는 이 장 C의 특징에 대해 의도적으로 생략하고 있다.

더 큰 프로그램을 쓰는데 중요하다. 여기에는 포인터, 구조물, C의 풍부한 연산자 집합의 대부분, 여러 가지가 포함된다.

제어 흐름 문 및 표준 라이브러리.

이 접근방식과 그 단점. 가장 주목할 만한 것은 어떤 특정한 특징에 대한 완전한 이야기는 여기서 찾을 수 없다는 것과, 그리고 가장 주목할 만한 것은 바로 그것이다.

튜토리얼은 간략하게 설명하면 오해의 소지가 있을 수 있다. 그리고 그 예들은 C의 전권을 사용하지 않기 때문에, C의 전력은 그렇지 않다.

간결하고 우아하다. 우리는 이러한 효과를 최소화하기 위해 노력했지만, 주의를 기울여야 한다. 또 다른 단점은 나중에라는 것이다.

장들은 반드시 이 장의 일부를 반복할 것이다. 우리는 반복이 귀찮은 것보다 더 많은 도움이 되기를 바란다.

어떤 경우에도 경험이 풍부한 프로그래머는 이 장의 자료에서 자신의 자료로 추론할 수 있어야 한다.

프로그래밍의 필요성 초보자는 스스로 작고 비슷한 프로그램을 작성해 보완해야 한다. 두 그룹 모두 사용 가능

제2장에서 시작하는 보다 상세한 설명을 걸 수 있는 프레임워크로서.

1.1 시작하기

새로운 프로그래밍 언어를 배우는 유일한 방법은 그 안에 프로그램을 쓰는 것이다. 처음 쓰는 프로그램은 모두에게 동일하다.

언어:

단어 인쇄

안녕 세계

이것은 큰 장애물이다. 그것을 뛰어넘기 위해서는 프로그램 텍스트를 어딘가에 만들고, 성공적으로 컴파일하고, 로딩할 수 있어야 한다.

실행해보고, 당신의 출력이 어디로 갔는지 알아내라. 이러한 기계적인 세부 사항을 숙달하면, 다른 모든 것은 비교적 쉽다.

C에서 '헬로, 월드'를 인쇄하는 프로그램은

#include <stdio.h>

main()

{

printf("hello, world\n";

}

이 프로그램을 실행하는 방법은 사용하는 시스템에 따라 달라진다. UNIX 운영 체제의 특정 예로서

hello.c와 같이 이름이 ''c'로 끝나는 파일에 프로그램을 만든 다음 명령으로 프로그램을 컴파일해야 한다.

cc 안녕.c

등장인물을 생략하거나 무언가를 잘못 발음하는 것과 같은 어떤 것도 망치지 않았다면, 편찬은 조용히 진행될 것이다.

그리고 a.out이라는 실행 파일을 만들어라. 명령을 입력하여 a.out을 실행하는 경우

a.out

그것은 인쇄될 것이다

hello, world

다른 시스템에서는 규칙이 다를 수 있으므로 현지 전문가에게 문의하십시오.

자, 프로그램 자체에 대한 몇 가지 설명을 위해. C 프로그램은 크기가 어떻든 기능과 변수로 구성된다. A을

함수에는 수행할 계산 작업을 지정하는 문장이 포함되며 변수에는 다음 기간 동안 사용되는 값이 저장된다.

연산 C 기능은 포트란의 서브루틴과 기능 또는 파스칼의 절차와 기능과 같다. 우리의

예를 들어 메인이라는 함수를 들 수 있다. 보통 당신은 당신이 좋아하는 어떤 이름이라도 자유롭게 기능을 부여할 수 있지만, "main"은

특수 - 프로그램이 메인 시작 부분에서 실행되기 시작함 이것은 모든 프로그램이 메인 프로그램을 가지고 있어야 한다는 것을 의미한다.

어디선가


main은 보통 다른 기능을 호출하여 그 작업을 수행하도록 돕는다. 당신이 작성한 기능, 제공된 라이브러리의 기능 등이 있다.
너를 위해서. 프로그램의 첫 번째 줄,
#include <stdio>.h>
컴파일러에게 표준 입력/출력 라이브러리에 대한 정보를 포함하도록 지시한다. 라인은 많은 C의 시작 부분에 나타난다.
원본 파일 표준 라이브러리는 7장과 부록 B에 설명되어 있다.
함수 간 데이터 통신의 한 가지 방법은 호출함수가 인수라고 하는 값 목록을 제공하는 것이다.
그것이 부르는 기능에. 함수 이름 뒤의 괄호는 인수 목록을 둘러싸고 있다. 이 예에서 main은 다음과 같이 정의된다.
빈 목록( )으로 표시되는 인수가 없을 것으로 예상하는 함수다.
#include <stdio>.h> 표준 라이브러리에 대한 정보를 포함한다.
mainstep은 main이라고 불리는 함수를 정의한다.
인수 값을 수신하지 않은 경우
{ 본문 진술은 가새로 동봉됨
printf("hello, world\n; 메인 호출 라이브러리 함수 printf
이 일련의 문자를 인쇄하다
} \n은 뉴라인 문자를 나타냄
첫 번째 C 프로그램
함수의 문장은 가새 { }에 동봉되어 있다. 함수 메인에는 하나의 문만 들어 있다.
printf("hello, world\n";
함수는 이름을 붙여서 부르고, 이어서 괄호화된 인수 리스트가 나오므로, 이것은 함수를 printf라고 부른다.
printf는 출력물을 인쇄하는 라이브러리 함수인데, 이 경우 문자열은 "Hello, world\n.printf는 출력물을 인쇄한다.
인용 부호
"hello, world\n"과 같이 큰따옴표로 된 일련의 문자를 문자열 또는 문자열 상수라고 부른다. 를 위해
우리가 문자열을 사용하는 유일한 방법은 인쇄물과 다른 기능들을 위한 논쟁일 것이다.
문자열의 \n 순서는 뉴라인 문자에 대한 C 표기법이며, 인쇄할 때 출력이 왼쪽으로 진척된다.
다음 줄에 마진하다 \n(가치 있는 실험)을 빼놓으면, \n(가치 있는 실험)이 끝난 뒤에 줄서기가 없다는 것을 알게 된다.
출력이 인쇄하다 \n을 사용하여 인쇄물 인수에 새 줄 문자를 포함하십시오.
printf("hello, world
");
C 컴파일러는 오류 메시지를 생성할 것이다.
printf는 결코 뉴라인 문자를 자동으로 공급하지 않기 때문에 여러 통화를 사용하여 단계별로 출력 라인을 구축할 수 있다.
우리의 첫 번째 프로그램도 똑같이 쓰여질 수 있었다.
#include <stdio>.h>
주지의
{
printf("hello, ";;
printf("world";;
printf("\n";
}
같은 생산량을 생산하기 위해서.
\n은 단일 문자만 나타낸다는 점에 유의하십시오. \n과 같은 탈출 시퀀스는 일반적이고 확장 가능한 메커니즘을 제공한다.
형식이 어렵거나 보이지 않는 문자를 나타내기 위해. C에서 제공하는 다른 기능으로는 탭의 경우 \t, 백스페이스의 경우 \b, \" 등이 있다.
백슬래시 자체에 대한 이중 인용과 \\ 섹션 2.3에 전체 목록이 있다.
운동 1-1. 시스템에서 "Hello, world" 프로그램을 실행하십시오. 프로그램의 일부를 빼서 보는 실험을 한다.
어떤 오류 메시지가 표시되는지 확인하십시오.
운동 1-2. 인화 인화 문자열에 \c가 포함되어 있을 때 어떤 일이 발생하는지 실험하십시오. 여기서 c는 일부 문자가 아닌 경우
위에 열거한

C는 범용 프로그래밍 언어다. 기존에 있던 UNIX 운영 체제와 밀접하게 연계되어 왔다.

개발된, 시스템과 시스템에서 실행되는 대부분의 프로그램은 모두 C로 작성되기 때문에. 그러나 언어는 묶여 있지 않다.

하나의 운영 체제나 기계에 연결된다. 그리고 비록 그것이 "시스템 프로그래밍 언어"라고 불렸지만, 그것은 그것이 그것이기 때문이다.

컴파일러와 운영체제 작성에 유용하게 사용되어 왔으며, 그것은 많은 다른 분야에서의 주요 프로그램 작성에 동등하게 잘 사용되어 왔다.

도메인들

C의 많은 중요한 아이디어들은 마틴 리차드에 의해 개발된 BCPL 언어에서 유래한다. BCPL이 에 미치는 영향

C는 언어 B를 통해 간접적으로 진행되었는데, Ken Thompson이 1970년에 처음으로 UNIX 시스템을 위해 쓴 것이다.

DEC PDP-7

BCPL과 B는 '유형 없는' 언어다. 이와는 대조적으로 C는 다양한 데이터 유형을 제공한다. 기본적인 타입은 등장인물이지만

여러 크기의 정수 및 부동 소수점 번호. 또한 다음과 같이 생성된 파생 데이터 유형의 계층도 있다.

포인터, 배열, 구조 및 조합. 표현식은 연산자와 피연산자로부터 형성된다. 모든 표현식은 다음을 포함한다.

할당 또는 함수 호출은 문장이 될 수 있다. 포인터는 기계에 독립적인 주소 산술을 제공한다.

C는 잘 구성된 프로그램에 필요한 기본적인 제어 흐름 구조를 제공한다: 문 그룹화, 결정

만들기(만약에, 가능한 값 중 하나를 선택(스위치), 종단 테스트를 맨 위에 놓고 루핑(그 동안,

(for) 또는 (do) 하단과 조기 루프 출구(break).

함수는 기본 형식, 구조, 조합 또는 포인터의 값을 반환할 수 있다. 어떤 기능도 재귀적으로 호출할 수 있다. 국부적

변수는 일반적으로 "자동"이거나 각 호출로 새로 생성된다. 함수 정의는 중첩되지 않을 수 있지만

변수는 블록-프로토콜 방식으로 선언될 수 있다. C 프로그램의 기능은 다음과 같은 별도의 소스 파일에 존재할 수 있다.

따로 편찬하다 변수는 함수의 내부일 수 있으며, 외부일 수 있지만 단일 소스 파일 내에서만 알려져 있거나,

전체 프로그램에 표시됨.

사전 처리 단계는 프로그램 텍스트, 다른 원본 파일 포함 및 조건부에 대한 매크로 대체 수행

편찬

C는 상대적으로 '저수준' 언어다. 이 특성화는 경멸적인 것이 아니다; 그것은 단지 C가 같은 것을 다루고 있다는 것을 의미한다.

대부분의 컴퓨터가 하는 개체, 즉 문자, 숫자 및 주소. 이것들을 조합하여 움직일 수 있다.

실제 기계에 의해 구현된 산술 및 논리 연산자와 함께.

C는 문자열, 집합, 목록 또는 배열과 같은 복합 객체를 직접 처리하는 작업을 제공하지 않는다. 없다

구조물이 하나의 단위로 복사될 수 있지만 전체 배열 또는 문자열을 조작하는 작업 언어가 정의되지 않음

정적 정의 및 함수의 로컬 변수에 의해 제공되는 스택 규율을 제외한 모든 저장소 할당 설비

쓰레기 더미나 쓰레기 수거가 없다. 마지막으로, C 자체는 입출력 설비를 제공하지 않으며, READ나 WRIT이 없다.

문장, 내장 파일 액세스 방법 없음. 이러한 모든 상위 레벨 메커니즘은 명시적으로 호출하여 제공되어야 한다.

기능들 대부분의 C 구현에는 그러한 기능의 합리적으로 표준화된 컬렉션이 포함되어 있다.

마찬가지로 C는 테스트, 루프, 그룹화 및 하위 프로그램 등 간단한 단일 스레드 제어 흐름만 제공하지만

다중 프로그래밍, 병렬 작동, 동기화 또는 코루틴.

비록 이러한 특징들 중 일부가 없는 것이 심각한 결핍으로 보일지 모르지만, (''내가 어떤 기능을 불러야 한다는 말씀이시죠?

두 개의 문자열을 비교하시겠습니까?'), 언어를 적당한 크기로 낮추면 실질적인 이점이 있다. C는 상대적으로 작기 때문에, C는 비교적 작다.

작은 공간에서 설명할 수 있고, 빠르게 배울 수 있다. 프로그래머는 합리적으로 알고 이해하기를 기대할 수 있다.

실제로 규칙적으로 전체 언어를 사용한다.

여러 해 동안, C의 정의는 The C Programming Language 초판의 참조 매뉴얼이었다. 1983년,

미국 국립 표준 연구소(ANSI)는 의 현대적이고 포괄적인 정의를 제공하기 위해 위원회를 설립했다.

C. 결과 정의인 ANSI 표준 또는 'ANSI C'는 1988년 말에 완료되었다. 의 대부분의 특징

표준은 이미 현대 컴파일러에 의해 지원되고 있다.

표준은 원본 참조 매뉴얼에 기초한다. 언어는 비교적 거의 변하지 않는다.; 언어의 목표 중 하나이다.

표준은 대부분의 기존 프로그램이 유효하게 유지되도록 하는 것이었습니다. 그렇지 않으면 컴파일러가 생산할 수 있는 프로그램을

새로운 행동에 대한 경고


대부분의 프로그래머들에게 가장 중요한 변화는 함수를 선언하고 정의하기 위한 새로운 구문이다. A함수

선언은 이제 함수의 인수에 대한 설명을 포함할 수 있다. 정의 구문은 일치하도록 변경된다. 이 엑스트라

정보는 컴파일러들이 불일치하는 주장으로 인한 오류를 훨씬 더 쉽게 감지할 수 있게 해준다; 우리의 경험에 따르면, 그것은

그 언어에 매우 유용한 추가.

다른 작은 규모의 언어 변화도 있다. 널리 보급되어 있던 구조 할당 및 열거가 이루어지고 있다.

이제 공식적으로 언어의 일부분이야 이제 부동 소수점 연산은 단일 정밀도로 수행될 수 있다. 의 속성

특히 서명되지 않은 유형의 경우 산술을 명확히 한다. 전처리가 더 정교하다. 대부분의 이러한 변화들은 대부분

대부분의 프로그래머에게 미치는 영향은 미미하다.

표준의 두 번째 중요한 기여는 C와 함께할 도서관의 정의다. 다음에 대한 함수를 지정한다.

운영 체제 액세스(예: 파일 읽기 및 쓰기), 포맷된 입력 및 출력, 메모리 할당, 문자열

조작 같은 것. 데이터 함수 선언에 대한 균일한 액세스를 제공하는 표준 헤더 모음

이 라이브러리를 사용하여 호스트 시스템과 상호 작용하는 프로그램은 호환되는 동작이 보장된다. 도서관의 대부분은

UNIX 시스템의 "표준 I/O 라이브러리"를 면밀히 모델링. 이 도서관은 초판에 기술되어 있으며,

다른 시스템에서도 널리 사용되었다. 다시 말하지만, 대부분의 프로그래머들은 큰 변화를 보지 못할 것이다.

C가 제공하는 데이터 유형과 제어 구조는 대부분의 컴퓨터에서 직접 지원되기 때문에 런타임 라이브러리

자급제 프로그램을 구현하는 데 필요한 것은 매우 작다. 표준 라이브러리 함수는 명시적으로만 호출되므로 다음과 같이 할 수 있다.

필요 없으면 피하다 대부분은 C로 작성할 수 있으며, 그들이 숨기고 있는 운영체제 세부사항을 제외하고,

휴대할 수 있다.

비록 C가 많은 컴퓨터의 기능과 일치하지만, 그것은 어떤 특정한 기계 구조와도 무관하다. 조금으로

휴대용 프로그램, 즉 다양한 하드웨어에서 변경 없이 실행할 수 있는 프로그램을 쉽게 작성할 수 있다. The

표준은 휴대성 문제를 명시적으로 만들고, 다음이 있는 기계를 특징짓는 상수 집합을 규정한다.

프로그램이 실행된다.

C는 강한 형식의 언어는 아니지만, 진화하면서 활자체크기가 강화되었다. 의 원래 정의

C는 포인터와 정수의 교환을 눈살을 찌푸렸으나 허락했다; 이것은 제거된 지 오래되었고, 표준이 되었다.

이제 선량한 컴파일러에 의해 이미 시행된 적절한 선언과 명시적인 변환을 요구한다. 새로운

함수 선언은 이 방향의 또 다른 단계다. 컴파일러는 대부분의 유형 오류를 경고하며, 자동은 없다.

호환되지 않는 데이터 유형의 변환. 그럼에도 불구하고 C는 프로그래머가 자신이 무엇인지 알고 있다는 기본철학을 간직하고 있다.

하는 것; 그것은 단지 그들의 의도를 명시적으로 말하기만 하면 된다.

C는 다른 언어와 마찬가지로 흠이 있다. 일부 연산자는 잘못된 우선 순위를 가지며, 일부 구문은

더 나을 수도 있다. 그럼에도 불구하고, C는 매우 효과적이고 다양한 언어들을 위한 표현력을 증명했다.

프로그래밍 응용 프로그램

이 책은 다음과 같이 정리되어 있다. 1장은 C의 중심부에 관한 자습서다. 그 목적은 독자를 다음과 같이 시작하는 것이다.

우리는 새로운 언어를 배우는 방법이 그 안에 프로그램을 쓰는 것이라고 강하게 믿기 때문에 가능한 한 빨리. 튜토리얼

프로그래밍의 기본 요소에 대한 실무 지식을 가정한다; 컴퓨터나 에 대한 설명은 없다.

컴파일도 n=n+1과 같은 표현의 의미도 없다. 비록 우리는 가능한 한 유용함을 보여주기 위해 노력했지만

프로그래밍 기법, 이 책은 데이터 구조와 알고리즘에 대한 참조 작업이 아닌, 강제적으로 필요한 경우

우리는 언어에 집중해 왔다.

2장에서 6장까지는 C의 다양한 측면을 보다 상세하게, 오히려 1장보다는 형식적으로 논한다.

고립된 단편보다는 완전한 프로그램의 예에 여전히 중점을 두고 있다. 제2장에서는 기본적인 데이터 유형을 다루고 있다.

연산자와 표현식. 제3장 위협 흐름 제어: if-else, switch, while, for 등 제4장에서는 기능 및

프로그램 구조 - 외부 변수, 스코프 규칙, 다중 소스 파일 등 - 그리고 전처리기 터치.

제5장에서는 포인터와 어드레스 산수를 논한다. 6장은 구조와 결합을 다룬다.

7장은 운영 체제에 대한 공통 인터페이스를 제공하는 표준 라이브러리를 설명한다. 이 라이브러리가 정의됨

ANSI 표준에 의해, C를 지원하는 모든 기계에서 지원됨을 의미하므로, 그것을 입력, 출력하기 위해 사용하는 프로그램들

그리고 다른 운영 체제 액세스는 변경 없이 한 시스템에서 다른 시스템으로 이동할 수 있다.


컴퓨팅(컴퓨터를 다루는) 월드는 1978년 The C Programming Language가 출판한 이후 큰 변혁을 겪었다. 큰 컴퓨터는 훨씬더 커졌다. 그리고 PC(개인용 컴퓨터)는 능력을 가지게 되었다. 10년 전의 컴퓨터의 필적할만큼 이 기간의 시간 동안 C도 대단하지 않을 정도지만 변했고, UNIX의 OS로 그 기원을 훨씬 뛰어 넘었다!


C의 커지는 인기, 세월이 흐르면서 변화는 언어, 그리고 그 설계에 관여하지 않은 그룹에 의한 컴파일러의 생성, 이 책의 초판이 제공한 것보다 더 정확하고 현대적인 언어 정의의 필요성을 증명하기 위해 결합되었다. 1983년 미국 국가표준연구소(ANSI)는 그 정신을 그대로 유지하면서 "언어 C에 대한 모호하지 않고 기계에 의존하지 않는 정의"를 만드는 것을 목표로 하는 위원회를 설립하였다. 결과는 C에 대한 ANSI 표준이다.
















모두에게 진심으로 감사드린다.
브라이언 W. 케르니건
데니스 M. 리치

  • 서문
  • 초판 서문
  • 소개

1장 자습서 소개 (튜토리얼 인트로덕션)

1.시작하기

2.변수와 산술표현식(아리쓰메틱 익스프레션)

3.for문(the for statement)

4.기호상수(심볼릭 콘스탄트)

5.문자 입출력(character Input and Output)

1.파일 복사하기

2.문자 세기

3.줄 세기

4.단어 세기

6.배열

7.함수(펑션)

8.인자(알규멘트-call by 벨류)

9.문자 배열

10.익스터널 변수와 스코프

2장 타입, 오퍼레이터 그리고 표현식

1.변수 이름

2.데이터 타입과 사이즈

3.상수

4.선언

5.산술 연산자

6.관계 연산자와 논리 연산자

7.타입 변환(컨버젼)

8.증가와 감소 연산자

9.비트와이즈(bitwise) 오퍼레이터

10.할당 연산자와 표현식

11.조건(conditional)의 표현식

12.precedence and Order of Evaluation


3장 제어문 (Contorl Flow)

1.스테이멘스와 블록 

2.If-Else

3.Else-If

4.Switch

5.Loof While, For

6.Loof Do While

7.Break와 Continue

8.Goto and labels


4장 함수(펑션)와 프로그램 구조

1.함수의 기초

2.함수 반환?(Returning) 정수 없는

3.익스터널 변수

4.Scope Rules

5.Header Files

6.스태틱 변수

7.레지스터 변수 

8.블록 구조

9.초기화

10.리크루져(Recursion)

11.C 전처리기

1.파일 포함?(inclusion)

2.매크로 substitution

3.Conditional(조건?) Inclusion

5장 포인터와 배열

1.포인터와 주소

2.포인터와 함수 알규멘트

3.포인터와 배열

4.주소 아리쓰메틱(산술?)

5.문자 포인터와 함수

6.포인터 배열:포인터를 위한 포인터?(pointers to pointers)

7.Multi-dimensional 배열

8.포인터 배열의 초기화

9.포인터 vs 멀티-dimensional 배열

10.커멘드-라인 알규멘트 

11.포인터 to 함수

12.컴플리케이티드(복잡한?) 선언

6장 구조체 


+ Recent posts