[前回の話] C 言語で「文字」が扱える 文字は、'A' の形で、「A」という文字を表現する # 対象(データ)を直接表現したものを「リテラル」と呼ぶ # 'A' は、「A」という文字のリテラル # "ABC" は、「ABC」という文字列のリテラル putchar(文字), getchar() で、文字の入出力ができる [今回の話] 「文字」は、計算ができる # cf. 文字列も計算ができた(例: "abc" + 1 => "bc" ) 実は、「文字」は、小さな整数値で表現されている # つまり、「文字」は、C 言語の中では、「小さな数値」でコーディングされている # => 「文字」と「整数値」の対応表[同型対応]がある # => その表は、(半角英数記号の場合)ASCII Code 表 C 言語での整数の扱い 123 は、整数値「123」を表すリテラル # cf. # "3" => 「3」の一文字からなる文字列(を表すリテラル) # '3' => 「3」という文字(を表すリテラル) # 3 => 「3」という整数値(を表すリテラル) # 3.0 => 「3」という実数値(浮動小数点数)(を表すリテラル) これまでは、関数の引数に、「文字列」のみ想定してきた 引数変数には、char * をつけてきた これからは、 関数の引数に、「文字列」だけでなく、 「文字」や「整数」を指定したい 「文字を渡したい場合」 char 「整数を渡したい場合」 int char 文字型を表す int 整数型を表す 整数値に関しては、 四則 ( +, -, *, / ) が使える あまりの計算 % が使える 例: 11 % 4 => 11 = 4 * 2 + 3 => 3 比較 == : 同じ != : 異なる > : 大きい < : 小さい >= : 以上 <= : 以下 # ほかにもいろいろできるが、自分で調べよう [まとめ] 整数型 (int 型) ^ -2^(31) 〜 2^(31)-1 の範囲の整数値をとる 四則計算や、余りの計算、比較が可能 # print_number を使えば、画面にも表示できる 文字型 (char 型) は、実は、小さな(-128〜127)の数値で、表現される 対応は ASCII Code 表に記載されている # 日本語は ? # 全角の文字は、基本 C 言語では扱えない # why ? => 2 byte 以上になる # windows : sjis => 2 byte # Ubuntu : utf-8 => 3 byte # => 1 byte では表せないから # 文字列(byte 列)は OK # 「文字」は、整数値なので、普通に計算ができる [ハノイの塔] API : 我々は何ができるか ? # 「巨人の肩に乗る」 # すでに、作られたものを再利用する # => 作った人のルール (API) を守る必要がある ハノイの塔の問題を解く 高さが 3 なので、人間が解いて、計算機には、その解を実行してもらう