画面下の「▶」で再生開始、「⏸」で一時停止
画面右下の「>」で次頁へ、「<」で前頁へ
青字下線の部分は、まとめプリントの穴埋め
「作業」のところでは、ファイルをダウンロードしてコンパイル・実行
教科書 p.169
教科書 pp.170–173
「計算機入門」などで扱っている内容なので、ここでは説明を割愛する。
教科書 p.174
int
型と char
型をもう少し詳しく扱う。
教科書 p.174
int
型には型指定子 (type specifier) をつけられる
【符号に関する型指定子】
signed | 符合付き(負の数も扱える) |
unsigned | 符合なし(正の数と 0 のみ扱える) |
教科書 p.175
【サイズに関する型指定子】
short | 範囲が狭いがメモリーを節約できる |
long | メモリーを食うが、範囲が広い |
教科書 p.175
型指定子の使用例:
signed short int foo;
unsigned int bar;
unsigned long baz;
教科書 pp.176–177
さまざまな整数型、文字型が表せる値の最小・最大値をマクロとして集めたヘッダーである。
INT_MAX
, ULONG_MAX
などが定義されている。
作業: List 7-1 を実行する。(プリント Q 7.1.1)
CHAR_BIT
教科書 pp.178–179
説明を割愛する。教科書を読んでおくこと。
sizeof
演算子教科書 pp.179–180
sizeof (型名)
指定した型のサイズ(単位: バイト)を返す。
例:
printf("sizeof(long) = %u\n",
(unsigned)sizeof(long));
作業: List 7-3 を実行する。
size_t
型と typedef
宣言教科書 p.181
typedef 宣言は型の別名をつける。構造体・ポインターを学習したあとはよく使う。
一般形:
typedef 型 新しい型名 ;
例:
typedef unsigned size_t;
教科書 pp.181–183
sizeof 式
式(通常は変数)のサイズを返す。
式が配列の場合は配列全体のサイズを返す。
これから配列の要素数を計算することもできる。
例:
int n = sizeof(a) / sizeof(a[0]);
ただし関数の引数として受け取った配列ではそうならない。
(配列の要素数の計算もできない。)
作業:
sizeof.c
を実行する。
#include <stdio.h>
void foo(int x[]) {
printf("sizeof(x) = %u\n", (unsigned)sizeof(x));
}
int main(void) {
int a[] = { 1, 2, 3, 4, 5 };
printf("sizeof(a) = %u\n", (unsigned)sizeof(a));
foo(a);
return 0;
}
教科書 pp.183–193
「計算機入門」などで扱っている内容なので、説明を割愛する。
ビット演算やシフト演算は組込みソフトウェアの開発では 必須になる。
教科書 p.194
8 進定数は先頭に「0
」を、
16 進定数は先頭に「0x
」をつけて表記する。
10 進 | 8 進 | 16 進 |
---|---|---|
48 | 060 | 0x30 |
65 | 0101 | 0x41 |
97 | 0141 | 0x61 |
教科書 p.195
123U
, 98765L
などの接尾語を使う書き方がある。
教科書 p.196
printf
関数で整数を 8 進数または 16 進数で表示するために、
それぞれ、%o
,
%x
(A 〜 F を大文字にしたいときは %X
)
という書式指定を用いる。
例:
printf("%o\n", 16); /* 20 と出力 */
printf("%x\n", 46); /* 2e と出力 */
printf("%X\n", 29); /* 1D と出力 */
作業: List 7-8 を実行する。
教科書 p.197
説明を割愛する。教科書を読んでおくこと。
教科書 p.198
double
型のほかに float
型、
long double
型がある。
通常は double
以外はあまり使わない。
組込み系では float
を使うことがあるかもしれない。
教科書 pp.198–200
浮動小数点型は「計算機入門」などで扱っている内容なので、説明を割愛する。
定数には 1.23F
, 3.14L
などの接尾語を使う書き方、
6.02E23
など指数表記などがある。
教科書 p.201
sin
, cos
, sqrt
(square root — 平方根), exp
, log
などの
数学関数のプロトタイプ宣言が集められているヘッダーである。
gcc では、数学関数を使ったプログラムをコンパイルするとき、大抵 -lm
オプションが必要である。
gcc -lm list0710.c
作業: List 7-10 を実行する。
教科書 pp.202–203
浮動小数点数は、10 進の有限小数を正確に表現できるとは限らない。
#include <stdio.h>
int main(void) {
double x;
for (x = 0.0; x <= 1.0; x += 0.01) {
printf("%.60f\n", x); /* 小数第 60 位 まで表示 */
}
return 0;
}
作業: 上記のプログラムを実行する。
教科書 pp.202–203
誤差が蓄積するので、繰返しを制御する変数には、できるだけ浮動小数点数型(float
, double
)は
使わない。
教科書 pp.202–203
/* 悪い(誤差が蓄積する) */
double f;
for (f = 0.0; f < 1.0; f += 0.01) { … }
/* 良い(誤差が蓄積しない)*/
int i;
for (i = 0; i < 100; i++) {
double f = i / 100.0; …
}
教科書 p.204
教科書 pp.204–205
優先順位や結合性をすべてを覚える必要はないが、必要に応じて表を調べられ るように、どのような演算子があるかくらいは覚えておきたい。(Table 7-11)
教科書 pp.206–207
暗黙の型変換やキャストのときの詳しい規則は、必要になったら調べる。