第 4.7 節補足 — 数値と文字の違い C における「文字データ」の扱い • C のソースでは,文字 a を ’a’ と書く。単に a と書けば,それは変数 a の内容を意味す る。’ (単一引用符) の中に書けるのは一文字のみである。 • 文字を変数に格納するには char 型の変数を使うのが普通である。 • printf 文で,第 2 引数以降に指定した値を文字として表示するには,%c を使う。 char c ; /* char 型変数 c の宣言 */ c = ’a’; /* 変数 c に文字 a を代入 */ printf("%c\n", c); /* a と表示される */ • [注意] ’a’ (文字 a) と "a" (文字列 a) は異なるものである。 printf("%s\n", "a"); printf("%s\n", ’a’); /* a と表示される */ /* 間違い */ printf("%c\n", ’a’); /* a と表示される */ コンピュータ内部でのデータ表現 • コンピュータ内部では,すべてのものは 0 と 1 の並びである。 • 整数は 2 進数を使って 0 と 1 の並びとして表現される(ここでは負の数は考えない)。 整数 1: 00000000 00000000 00000000 00000001 整数 2: 00000000 00000000 00000000 00000010 整数 3: 00000000 00000000 00000000 00000011 • 文字は ASCII (アスキー) コードに従い,8 個の 0 と 1 で表現される(ここでは,いわゆる 半角の英数字のみ考える。ACCII コードの全体は教科書の付録 C を参照のこと。)。0 と 1 の並びを 2 進数と見なせば,括弧内に記したとおり,ASCII コードを 10 進の整数で表せる。 文字 ’A’: 01000001 (65) 文字 ’a’: 01100001 (97) 文字 ’1’: 00110001 (49) すなわち,コンピュータ内部では,文字も整数で表現されている。また, 「数値(整数)の 1」 と「数字(文字)の 1」は異なるものであることに注意。 printf("%c(%d)\n", ’a’, ’a’); /* a(97) と表示される */ printf("%d,%d\n", 1, ’1’); /* 1,49 と表示される */ printf("%d\n", ’1’ + ’1’); /* 98 と表示される */ 1 データの型とサイズ • コンピュータ内でのデータの表現は,すべて 0 と 1 の並びであるから,それを文字と見なす か,整数と見なすか,によってデータの意味するものが異なる。このようなデータの区別を データの型 (type) という。なお,1.0 などの実数は整数とは異なる方法で,0 と 1 の並びと して表現されている(浮動小数点形式)。 • 一つのデータを表すのに用いる 0 と 1 の個数はデータ型に応じて決まっている。この個数を データ型のサイズという。 – 文字 (char) 型のサイズは 8 bit (= 1 byte) である。 – 整数 (int) 型のサイズは機種依存であるが,最近のコンピュータでは,32 bit (= 4 byte) であることが多い。int 型で扱える整数の最大値は,int 型のサイズによって決まる。 整数値で文字を扱う • char 型変数には 8 bit で表現可能な整数値 (負の数を扱わないときは 0 から 255) を代入す ることができる。 • int 型変数に文字を代入することも可能である。 char c; /* char 型変数 c の宣言 */ int i; /* int 型変数 i の宣言 */ c = 97; /* ’a’ を意味する 10 進整数値 97 を代入 */ printf("%c\n", c); /* a と表示される */ i = ’a’; /* i に 97 を代入 */ printf("%c(%d)\n", i, i); /* a(97) と表示される */ キーボードからの数値と文字の入力 • キーボードからの入力はすべて文字である。例えば,12 とタイプすれば,整数の 12 ではな く,文字の ’1’ と ’2’ を入力したことになる。 • scanf は,第一引数に %d があれば,キーボードからタイプした数字の並びを 10 進数の整数 と見なし,それを整数に変換してから変数に格納する。%d では数字以外の入力は扱えない。 int i; scanf("%d", &i); /* キーボードから入力する数字を整数として i に格納 */ printf("%d\n", i); /* i の内容を整数として表示 */ • getchar を使うと,キーボードから 1 文字入力し,それを文字のまま扱える。ただし,getchar がキーボードから取得した文字は int 型のサイズを持つこととされている。 int i; i = getchar(); /* キーボードから入力する 1 文字を i に代入 */ printf("%c\n", i); /* i の内容を文字として表示 */ 2
© Copyright 2024 Paperzz