このスライドの使い方
第 7 章「基本型」
教科書 pp.181–225
§ 7.1「基本型と数」
教科書 pp.182–185
「計算機入門」などで扱っている内容なので、ここでは説明を割愛する
§ 7.2「整数型と文字型」
教科書 p.186
int 型と char 型をもう少し詳しく扱う
整数型と文字型
教科書 p.186
int 型には型指定子 (type specifier) をつけられる
【符号に関する型指定子】
unsigned | 符合なし(正の数と 0 のみ扱える) |
signed | 符合付き(負の数も扱える) |
整数型と文字型(続き)
教科書 p.186
【サイズに関する型指定子】
short | 範囲が狭いがメモリーを節約 |
long | メモリーを食うが、範囲が広い |
long long | さらに… |
整数型と文字型(続き)
教科書 p.175186
型指定子の使用例:
signed short int foo;
unsigned int bar;
unsigned long baz;
整数型の使い分け
教科書 p.188
教科書を読んでおくこと
<limits.h> ヘッダー
教科書 pp.188–190
さまざまな整数型、文字型が表せる値の最小・最大値をマクロとして集めたヘッダー
INT_MAX, ULONG_MAX などが定義されている
作業:
List 7-1
を実行する(プリント Q 7.1.1)
文字型〜ビットと CHAR_BIT
教科書 pp.190–192
説明を割愛する。教科書を読んでおくこと
sizeof 演算子
教科書 pp.192–193
sizeof (型名)
指定した型のサイズ(単位: バイト)を返す
例:
printf("sizeof(long) = %u\n",
(unsigned)sizeof(long));
作業:
List 7-3
を実行する。
size_t 型と typedef 宣言
教科書 p.194
typedef 宣言は型の別名をつける
一般形:
typedef 型 新しい型名 ;
例:
typedef unsigned size_t;
配列の要素数の求め方
教科書 p.196
sizeof 式
式(通常は変数)のサイズを返す
式が配列の場合は配列全体のサイズを返す
これから配列の要素数を計算することもできる
例:
int n = sizeof(a) / sizeof(a[0]);
作業:
List 7-4,
List 7-5
を実行する
作業: まとめのプリント Q 7.1.2 をやってみる
配列の要素数の求め方(続き)
ただし関数の引数として受け取った配列ではそうならない
(配列の要素数の計算もできない)
作業:
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.197–209
「計算機入門」などで扱っている内容なので、説明を割愛する
ビット演算やシフト演算は、組込みソフトウェアの開発では
必須になる
整数定数
教科書 p.210
8 進定数は先頭に「0」を、
16 進定数は先頭に「0x」をつけて表記する
| 10 進 | 8 進 | 16 進 |
| 48 | 060 | 0x30 |
| 65 | 0101 | 0x41 |
| 97 | 0141 | 0x61 |
整数定数の型
教科書 p.211
123U, 98765L などの接尾語を使う書き方がある
整数の表示
教科書 p.212
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
7-9
を実行する
オーバーフローと例外
教科書 p.213
説明を割愛する。教科書を読んでおくこと
§ 7-3「浮動小数点型」
教科書 p.214
double 型のほかに float 型、
long double 型がある
浮動小数点型〜浮動小数点定数
教科書 pp.214–216
浮動小数点型は「計算機入門」などで扱っている内容なので、説明を割愛する
- 定数には
1.23F, 3.14L などの接尾語を使う書き方、
6.02E23 など指数表記などがある
<math.h> ヘッダー
教科書 p.217
sin, cos, sqrt
, exp, log などの
数学関数のプロトタイプ宣言が集められているヘッダーである
作業:
List 7-10
7-11
を実行する
gcc では、数学関数を使ったプログラムをコンパイルするとき、大抵 -lm オプションが必要である
gcc list0710.c -lm
繰返しの制御
教科書 pp.218–219
浮動小数点数は、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.218–219
誤差が蓄積するので、繰返しを制御する変数には、できるだけ浮動小数点数型(float, double)は
使わない
繰返しの制御(続き)
教科書 pp.218–219
作業:
List
7-12,
7-13
を実行して比べる
§ 7-4「演算と演算子」
教科書 p.220
演算子の優先順位と結合性
教科書 pp.220–221
優先順位や結合性をすべてを覚える必要はないが、必要に応じて表を調べられ
るように、どのような演算子があるかくらいは覚えておきたい (Table 7-117-13)
型変換の規則
教科書 pp.222–223
暗黙の型変換やキャストのときの詳しい規則は、必要になったら調べる