第 7 章 「基本型」のまとめ

7.1

用語のまとめ教 p.153

文字型と整数型 signed はする際の型指定子である。

、unsigned はの整数を宣言
教 p.154

limits.h ヘッダ 各数値型で表現できる値の最小・最大値をマクロとして集めたヘッダファイルである。
Bcc32 の場合、INT_MIN は、INT_MAX は、
UINT_MAX は123456789である。

#include <stdio.h>#include <limits.h>
int main(void) {printf("INT_MIN = %d\n", INT_MIN);
printf("INT_MAX = %d\n", INT_MAX);
printf("UINT_MAX = %ud\n", UINT_MAX);
return 0;}
Bcc32 の場合、limits.h は C:\borland\bcc55\Include\limits.h にあるが、実質的な部分は C:\borland\bcc55\Include\_lim.h に書かれている。
教 p.156

sizeof 演算子
sizeof (型名)という形で指定した型のサイズ（ 単位: バイト ）を返す。
教 p.157

typedef 宣言 typedef 宣言は型の別名をつける。
分類一般形

補足説明

typedef 宣言

typedef 型 新しい型名 ;例えば typedef unsigned size_t;

教 p.158
整数定数

8 進定数は先頭に を、16 進定数は先頭にVII - 1をつけて表記する。

10 進4865
97
教 p.170

8進060
01010141

16 進
0x30
0x410x61

整数の表示 printf 関数で整数を 8 進数または 16 進数で表示するためには、それぞれ、 ,（アルファベットを大文字にしたいときは）という書式指定を用いる。

教 p.175

math.h ヘッダsin, cos, tan, sqrt （ square root — 平方根）, exp, log など のヘッダファイルである。円周率（）、自然対数の底（）などの定数もマクロとして定義されている。
Bcc32 の場合、math.h は C:\borland\bcc55\Include\math.h にある。
教 p.176演算子の一覧 優先順位や結合性をすべてを覚える必要はないが、必要に応じて表を調べられるように、どのような演算子があるかくらいは覚えておきたい。(Table7-4)
教 p.180

sizeof 演算子（その 2 ）sizeof 式/**/という形で、式（通常は変数）のサイズ（単位: バイト ）を返す。特に、式が配列の場合は配列全体のサイズ（ 単位: バイト ）を返す。
ただし 、関数の引数として渡された配列では 、別の値（ポインタ型のサイズ ）を返すので注意する。

7.2 プログラム例
sizeof 演算子の確認
12345678910111213#include <stdio.h>void foo(int x[]) {printf("size=%u\n", sizeof(x));}
int main(void) {int a[] = { 1, 2, 3 };printf("size=%u\n", sizeof(a));
foo(a);
return 0;}

VII - 2

第 8 章 「いろいろなプログラムを作ってみよう」のまとめ
8.1 用語のまとめ

教 p.194

再帰(recursion)の定義に x 自身を使用すること。

。一般に xfactorial(4)→ 4 * factorial(3)→ 4 * 3 * factorial(2)→ 4 * 3 * 2 * factorial(1)→ 4 * 3 * 2 * 1 * factorial(0)→ 4 * 3 * 2 * 1 * 1• 繰返し（ for, while ）で簡単に実現できることを , 再帰で書くのは（ C 言語の場合）良いこととはいえない。階乗の例題プログラムは、あくまでも再帰を説明するためのものと考えること。
（もちろん、再帰を使わなければ簡単に書けないプログラムも多い。）• 再帰関数には、特別な文法も特別な実行規則も必要ない。あくまでも C 言語の普通の関数で、普通の実行規則に基づいて計算される。
教 p.199

getchar 関数関数。
教 p.199

EOF getchar などが 、入力の終わり（）に達した場合に返す値をマクロで EOF と書く。
（ stdio.h に定義されている。）
教 p.200
文字 C 言語では文字は、単にその文字に与えられたコード（ 整数値）で表す。
ASCII コード 表での文字コード の抜粋: 文字 10 進 16 進

’0’’A’’a’4865
970x300x410x61

拡張表記 Y=n の他に、Y=t, Y=a, Y=b などいくつかの特殊文字を表す表記がある。特と書く。に、バックスラッシュ（ 円記号）そのものを表す時には

教 p.203

教 p.204

putchar 関数。

VIII - 1

リダイレクト 標準入出力をファイルヘの入出力につなぎかえることで、C 言語 教 p.205
ではなく OS (Unix, MS-DOS など ) の機能になる。
コマンド 名 < ファイル名— ファイルの内容をコマンド の標準入力に渡す
コマンド 名 > ファイル名— コマンド の標準出力をファイルに書込む
コマンド 名 >> ファイル名 — コマンド の標準出力をファイルの最後に追加する形で書込む

8.2 プログラム例
ハノイの塔（ 再帰）

12
3
4
56
7
8
9
10
111213
14
15
16
17
18
19
20
21

#include <stdio.h>void move(int n, int a, int b) {printf("デ ィスク%dを棒 %dから棒 %dへ \n", n, a, b);}/* n 枚のデ ィスクを aから bに 移動する手順 */void hanoi(int n, int a, int b, int c) {if (n>0) {hanoi(n-1, a, c, b);move(n, a, b);hanoi(n-1, c, b, a);}}
int main(void) {int n;
printf(" 円盤は 何枚で すか ? "); scanf("%d", &n);hanoi(n, 1, 2, 3);
return 0;}

樹の描画（ 再帰）

1
2
3
4
5
6
7
8
9
10
11
12
13

#include <stdio.h>#include <math.h>void drawTree(int d, double x, double y, double r, double t) {/* d--- 再帰の 深さ 、(x, y) --- 枝の 根元の 座標 、r--- 枝の 長さ 、t--- 枝の 伸び る向き（ ラジ アン ）*/double r1;
if (d == 0) return; /* 打切り */printf("%6.3f %6.3f %6.3f %6.3f\n",x,y,x + r * cos(t), y + r * sin(t));
VIII - 2

1415
16
1718
1920
21
22
23
24
25
26

drawTree(d-1, x + r * cos(t),y + r * sin(t), 0.5 * r, t);
r1 = 0.5 * r;
drawTree(d-1, x + r1 * cos(t),y + r1 * sin(t), 0.5 * r, t + M_PI/2);
drawTree(d-1, x + r1 * cos(t),y + r1 * sin(t), 0.5 * r, t - M_PI/2);}
int main(void) {drawTree(6, 128, 255, 128,return 0;}-M_PI / 2);

VIII - 3