No.01


文字の扱い




A の文字コードは65 これ、だれが決めた?


 半角のアルファベットや数字、記号などの文字にはすべて番号が付けられています。これが文字コード。たとえば A は65 B は66 です。これは、ASCII(American Standard Code for Information Interchange、アスキーと読む)で決められて世界共通の約束事なんです。日本でも同じ規則がJIS(日本工業規格)で決められています。
 この表を覚える必要はまったくありません。でも A が65 a が97というのは覚えておくと便利でしょう。BCDEF…,bcdef…と順番に並んでいるので他の文字も簡単にわかりますからね。

文字は char型? int型?


 文字コードを記憶する変数はchar型、int型どっちを使ったらいいのでしょうか。
 答えは、「どちらでもいい。ただし文字列のときはchar型に限る」です。半角英数字の文字コードは0〜127の整数ですからchar型(8ビット)で記憶できます。でもint型(32ビット)で記憶しても問題はないのです。int型はC言語の基本なので、文字コードを扱う標準関数でもint型を前提として処理する場合が多いのです。
 ただし、文字列となると話は別。文字列はchar型の配列に入れるというのが鉄則です。int型配列に入れられなくはありませんが、標準関数がすべてchar型配列を扱うように作られているので、そうせざるを得ないのです。

  int main(void) {
      char x;
      x='A';
      printf("%c",x);
      return 0;
  }

  int main(void) {
      int x;
      x='A';
      printf("%c",x);
      return 0;
  }

上のプログラムはどちらもちゃんと動きます。

問題

1) 文字コードとは何?
こたえ
2) 0〜127の文字コードを表現するには何ビット必要か.
こたえ
3) char型変数の記憶サイズ(ビット数)は何ビットか.
こたえ
4) 'B' は何を意味するか? また,その値は?
こたえ
5) 文字コードを記憶できる変数の型は次のどれか.
   a) char型   b) int型   c) char型またはint型
こたえ
6) xがint型変数で値が66の場合,次のprintfでどのように表示されるか.
  printf("%c",x);
こたえ

追加問題

7) 教科書P93のように縦に並ぶ文字コード表を表示するプログラムを作れ.
こたえ

→ 戻る [プログラミング2]

大同工業大学 情報学部 大石研究室