다음 프로그램에서는 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. 화씨 테이블에 해당하는 온도를 출력하는 프로그램을 작성한다.

+ Recent posts